Отдельные стили ошибок и предупреждений WPF - PullRequest
6 голосов
/ 19 февраля 2010

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

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

1 Ответ

3 голосов
/ 19 февраля 2010

Мне иногда нужна эта золотая середина. Например, Command s, которым нужно 3 значения из CanExecute, а не true или false.

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

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

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


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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...