Выполнение проверки объекта с привязкой к данным после обновления свойства - PullRequest
2 голосов
/ 15 сентября 2008

У меня есть базовая форма с элементами управления, которые привязаны к объекту, реализующему интерфейс INotifyPropertyChanged . Я хотел бы добавить некоторые проверки для нескольких свойств, но не хочу реализовывать IDataErrorInfo для проверки нескольких свойств.

Я создал функции, которые выполняют проверку и возвращают сообщение об ошибке (если применимо) в объекте. Я хотел бы вызвать эти функции из моей формы, когда соответствующие свойства объекта изменились, и настроить элемент управления ErrorProvider в моей форме с любыми сообщениями об ошибках, которые были возвращены из функций проверки.

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

Есть ли еще одно событие, к которому я могу подключиться, чтобы вызвать эти функции проверки после обновления свойства моего объекта? Или мне лучше просто реализовать интерфейс IDataErrorInfo ?

Ответы [ 2 ]

1 голос
/ 15 сентября 2008

Я думаю, что нашел решение проблемы с помощью сообщения Кэмерона. Я изменил привязку для обновления OnPropertyChanged, и теперь, когда я подключаю обработчик события к событию LostFocus, проверка выполняется для «нового» значения из текстового поля, а не для того, что ранее содержалось в объекте

1 голос
/ 15 сентября 2008

Я точно не знаю, в чем проблема, вы говорите, что не можете установить свойство, пока элемент управления не потеряет фокус?

Если это так, вам нужно установить привязку для обновления OnPropertyChanged вместо OnValidation.

Привязка к OnPropertyChanged означает, что привязка обновляется немедленно, тогда как OnValidation обновляет базовый объект только при запуске проверки (что для большинства элементов управления происходит, когда они теряют фокус).

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