Как использовать IDataErrorInfo.Error в программе WPF?

У меня есть такой объект:

public class Person : IDataErrorInfo { public string PersonName{get;set;} public int Age{get;set;} string IDataErrorInfo.this[string propertyName] { get { if(propertyName=="PersonName") { if(PersonName.Length>30 || PersonName.Length<1) { return "Name is required and less than 30 characters."; } } return null; } } string IDataErrorInfo.Error { get { if(PersonName=="Tom" && Age!=30) { return "Tom must be 30."; } return null; } } } 

Связать свойства PersonName и Age легко:

   

Однако как я могу использовать свойство Error и показать его соответствующим образом?

Вот пример, адаптированный из этого вопроса , который показывает, как отображать ошибку в Tooltip:

      

Вы должны изменить стиль TextBox, чтобы он показывал, что не так с этим свойством. Вот простой пример, показывающий ошибку как подсказку:

  

Просто поместите его в Application.Resources из файла app.xaml, и он будет использоваться для каждого текстового поля вашего приложения:

    
  • Как связать перечисление с элементом управления combobox в WPF?
  • URI «clr-namespace» относится к пространству имен, которое не входит в сборку
  • Как отобразить другое значение для выпадающего списка значений / выбранного элемента в WPF ComboBox?
  • WPF Image Pan, Zoom и Scroll со слоями на canvasе
  • Dispatcher.CurrentDispatcher vs. Application.Current.Dispatcher
  • Как отключить цвет фона в TextBox в WPF
  • Как применить правило пользовательской сортировки к WPF DataGrid?
  • Принудительное рендеринг элемента управления WPF в памяти
  • Как Windows 8 Runtime (приложения для WinRT / Windows Store / Windows 10 Universal App) сравниваются с Silverlight и WPF?
  • Убедитесь, что приложение не работает в течение определенного периода времени и блокирует его
  • Как связать RadioButtons с перечислением?
  • Interesting Posts

    Как я могу подключить модем / маршрутизатор мобильной сети Verizon к маршрутизатору Linksys?

    Простое обнаружение объектов с использованием OpenCV и машинного обучения

    Эмулятор Android не запускается, показывая «недопустимый параметр командной строки»,

    путь к файлу Windows в формате java

    Как восстановить папки с форматированного диска

    «Адаптивный сервер недоступен или не существует» ошибка подключения к SQL Server с PHP

    Получение IP-адреса сервера в ASP.NET?

    UIScrollView. Любые мысли о реализации «бесконечной» прокрутки / масштабирования?

    Как заставить детей StackPanel заполнить максимальное пространство вниз?

    Что означает «Чтение или запись входов / выходов» и «Чтение байтов ввода-вывода или запись байтов»?

    Как я могу предоставить AntiForgeryToken при публикации данных JSON с использованием $ .ajax?

    Класс Django на основе ListView с формой

    Сужение конверсий в C ++ 0x. Это только я, или это звучит как нарушение?

    Выполняется ли Android-сервис из отдельного streamа вместо пользовательского интерфейса?

    Значок подсчета уведомлений панели действий (значок), например, Google

    Давайте будем гением компьютера.