Мы используем стандартный метод для наших элементов управления, чтобы сообщать о нарушенных правилах BO. Это делается через интерфейс IDataError в наших BO, а в XAML элемент управления привязан к свойству BO и т. Д. Этот подход работает нормально. Но нам нужно показать 2 типа визуалов в пользовательском интерфейсе в зависимости от типа (или категории, если хотите) ошибки аннулирования. Если это обязательное поле, мы показываем CueBanner (водяной знак), но для других типов мы меняем цвет границы элементов управления. В обоих сценариях мы устанавливаем тип инструмента сообщения об ошибке.
Проблема с IDataError заключается в том, что он не поддерживает метод / свойство для различения типов ошибок.
Единственный способ, которым я могу это сделать, - изучить текст ошибки, в тексте обязательного поля должно быть ключевое слово «обязательный». Следующий подход не выглядит правильным, но это единственный способ, которым я могу определить тип ошибки и затем соответствующим образом устранить ее. Все обязательные правила поля должны иметь в тексте ошибки «обязательное поле».
Чтобы все это работало, я создал собственное свойство зависимости с именем ErrorMessage. В моем ResourceDictionary у меня есть Style.Trigger для Validation.HasError. Там я установил для своих свойств зависимости значение ErrorContent. Теперь, когда изменяется значение моих свойств зависимости, я могу проверить текст и установить шаблон Validation.SetErrorTemplate (myControl, newErrorTemplate) в соответствии с типом ошибки. Я должен подключить несколько событий к элементу управления, например потерянный и получить фокус, чтобы управлять удалением или добавлением шаблона cueBanner, но все это будет работать. Просто я не уверен, что это лучший способ сделать это.
PS. Когда я устанавливаю ErrorTemplate, я делаю это в коде, это создает и добавляет его. Есть ли способ указать Validation.SetErrorTemplate на статический ресурс, помня о том, что мне нужно переключаться как минимум между двумя типами?
Ваши мысли, пожалуйста ..