Показать UserControl как недопустимый, когда DependencyProperty недействителен

У меня есть пользовательский элемент управления, который работает как селектор поставщиков. Он отображает текущее имя выбранного поставщика и использует кнопку для отображения диалогового окна выбора поставщика.

    <PO:VendorSelector VendorId="{Binding Path=VendorId, Mode=TwoWay,
 ValidatesOnDataErrors=True, NotifyOnValidationError=True, ValidatesOnNotifyDataErrors=True}" />

Я использую ValidationAttributes в модели данных, чтобы проверить, является ли VendorId нулевым. Обратите внимание, что ни один элемент управления в пользовательском элементе управления не привязывается напрямую к VendorId.

Когда я вызываю Validator.TryValidateObject, генерируется нулевое сообщение VendorId, но пользовательский элемент управления никогда не показывает никаких признаков ошибки. Мне нужно показать весь пользовательский элемент управления по ошибке.

Что мне нужно сделать? Что мне не хватает?

Стандартный шаблон проверки «Красная рамка/подсказка» повторно используется из шаблона, который работает для текстовых полей.


person user3326308    schedule 28.07.2015    source источник
comment
Я бы рекомендовал переключиться на использование IDataErrorInterface, так как WPF использует этот интерфейс для целей проверки. Вы можете увидеть действительно простой пример здесь, который включает настраиваемый шаблон проверки.   -  person Rachel    schedule 29.07.2015


Ответы (1)


Оказалось, что пользовательский атрибут проверки, который я использовал, не установил необязательный параметр MemberNames при вызове нового ValidationResult(string Message, string[] MemberNames). Это привело к удалению ошибки из совокупного запроса Linq в строках 75-78 HandleValidationResults в коде проверки, который я использую изначально из

http://www.eidias.com/Blog/2013/7/13/utilizing-inotifydataerrorinfo-in-wpf-mvvm-app

Как только массив имен членов был передан, все заработало нормально.

person user3326308    schedule 29.07.2015