Выполнение проверки объекта, связанного с базой данных, после обновления свойства

StackOverflow https://stackoverflow.com/questions/62686

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top