WPF отдельная ошибка и предупреждение стилей

Как мы можем показать пользовательские Предупреждения похожим способом к Ошибкам. Единственная разница - то, что управление, например, TextBox должен иметь другой ошибочный шаблон и подобный Проверке. HasError там должна быть Проверка. HasWarning.

Другими словами, не всеми проблемами проверки являются "ошибки" (в нашем приложении, по крайней мере). Мы хотим визуально указать, является ли что-то предупреждением или ошибкой.

6
задан Benjamin 31 August 2014 в 15:26
поделиться

1 ответ

Иногда мне нужна золотая середина. Подобно командам , которым требуются 3 значения из CanExecute , а не true или false .

Что касается предупреждений, которые действуют как проверка, я не знаю всех частей, которые нужно было бы собрать, но я думаю, что знаю, с чего начать.

Вам нужно будет полагаться на присоединенные свойства и присоединенные поведения (присоединенные свойства, которые подписываются на события объекта и выполняют операции, связанные с этими событиями, когда они запускаются). У вас может быть один, который управляет коллекцией объектов ValidationRule , чтобы определять, выдается ли предупреждение или нет, подобно свойствам Validation . У вас может быть один под названием HasWarning , который устанавливается или сбрасывается при проверке, на которую можно ссылаться в триггерах стиля / шаблона.

Вы можете сделать отображение предупреждения частью каждого шаблона элемента управления, или вы можете снова имитировать Validation и иметь прикрепленное свойство WarningTemplate , которое используется для размещения предупреждающей информации в AdornerLayer .


Поскольку пользовательские объекты ValidationRule возвращают объект ValidationResult , в котором ErrorContent является просто объектом, и этот объект также отображается в ValidationError объекты как ErrorContent , вы также можете в конце концов использовать обычную проверку.Вы могли бы использовать класс в качестве объекта ErrorContent , который имеет свойство ErrorType предупреждения или Error и привязать его к вашему ErrorTemplate .

Я не уверен, что наличие ошибки ValidationError предотвратит определенные операции (например, нажатие кнопок), которые вы хотели бы разрешить, но можно было бы создать какой-то прокси на ViewModel, который оценивает Тип ошибки .

3
ответ дан 17 December 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: