Событие на валидацию - WPF - PullRequest
       11

Событие на валидацию - WPF

1 голос
/ 05 декабря 2008

Я смотрю на разработку простой структуры проверки для WPF (метод IDataErrorInfo не предоставляет достаточно информации для моих нужд), и мне интересно, есть ли способ получить уведомление, когда свойство будет проверять? Обратите внимание, что мне нужно знать, что каждый раз, когда будет предпринята попытка проверки, а не только при наличии ошибки (поэтому NotifyOnValidationError не обрезает ее)

В качестве альтернативы, моя конечная цель состоит в том, чтобы просто упаковать в мои проверки больше информации, чем просто строку ошибки (насколько критична ошибка, ссылки для получения дополнительной информации и т. Д.), И в то же время разрешить проверку данных объектом данных ( Стиль IDataErrorInfo). Если кто-нибудь может указать мне метод для этого, то я тоже буду совершенно счастлив. :)

Ответы [ 2 ]

2 голосов
/ 05 декабря 2008

Проблема, с которой вы столкнетесь, заключается в том, что привязка и проверка данных WPF связаны с интерфейсом IDataErrorInfo. Привязки проверяются для проверки на основе свойства UpdateSourceTrigger привязки. Таким образом, если ваша привязка имеет «UpdateSourceTrigger = PropertyChanged», то каждый раз, когда свойство изменяется, он вызывает элемент [«MyProperty»], в который вы должны возвращать информацию о том, действительно ли ваше свойство действительно. Если он установлен на «LostFocus», то он проверяет всякий раз, когда элемент управления теряет фокус. Привязка также требует «ValidatesOnDataErrors = True», чтобы она принудительно проверила вашу привязанную сущность.

Я думаю, что вам лучше всего создать класс, который реализует IDataErrorInfo, а затем предоставить более подробную информацию в зависимости от серьезности ошибки.

1 голос
/ 10 декабря 2008

Вам нужно изучить наследование от ValidationRule, а затем добавить новое правило ко всем объектам привязки.

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