Как использовать 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, и он будет использоваться для каждого текстового поля вашего приложения:

    
  • Разница между ObservableCollection и BindingList
  • Выбор элемента текстового поля в списке не изменяет выбранный элемент списка
  • Стиль MenuItem со значком создает только один значок
  • Windows 10 Universal App File / Directory Access
  • WPF TabControl - предотrotation разгрузки при изменении вкладки?
  • Как создать полупрозрачное окно в WPF, которое позволяет событиям мыши проходить через
  • Как точно встраиваемые свойства работают в WPF?
  • Выберите узел TreeView правой кнопкой мыши перед отображением ContextMenu
  • WPF ListView Неактивный цвет выделения
  • Для чего нужен DataContext?
  • Поиск конкретных цветов пикселей BitmapImage
  • Interesting Posts

    java.lang.OutOfMemoryError: пространство кучи Java

    Excel автоматически добавляет дополнительную строку с формулами для введенного количества лет

    Открыть диалоговое окно каталога

    Основные понятия MVVM – что должен делать ViewModel?

    nHibernate-сопоставление для пользовательских типов

    Как я могу получить объект сеанса, если у меня есть entitymanager

    Как правильно синхронизировать время в Linux, запущенном как виртуальный гость после того, как хост возобновит спящий режим?

    Где находится JAVA_HOME на macOS Sierra (10.12), Эль Капитан (10.11), Йосемити (10.10), Маверикс (10.9), Горный лев (10.8) или Лекс OSX (10.7)?

    Не удается загрузить Windows 8.1 после перехода на Samsung SSD с помощью поставляемого программного обеспечения

    Возможна ли сумма ArrayList без цикла

    Воспроизведение звука на iPhone даже в бесшумном режиме

    Понимание блока и типа блока Magento

    Разница между DTO, VO, POJO, JavaBeans?

    Python Pandas добавляет столбец для максимального количества строк по выбранным столбцам

    Entity Framework: «Заявление об обновлении, вставке или удалении влияет на неожиданное количество строк (0)».

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