Я пытаюсь реализовать элегантную проверку формы в приложении C#/WPF/Entity Framework 4.0. У меня есть классическая форма (некоторые текстовые поля и флажки) и кнопка сохранения.
Я хочу обновить источник (и базу данных) только тогда, когда пользователь нажимает «Сохранить», и я также хочу запускать проверку формы только тогда, когда пользователь нажимает «Сохранить».
Я установил все свои привязки с помощью параметра UpdateSourceTrigger=Explicit
. Я также поместил все привязки в BindingGroup
.
Когда пользователь нажимает кнопку «Сохранить», я запускаю метод UpdateSources
группы привязки — это вызывает UpdateSource
для каждой привязки. В этот момент (до завершения обновления исходного кода) я хочу, чтобы проверка формы выполнялась, а ошибки выделялись в графическом интерфейсе. Если ошибок ввода нет, обновление должно пройти бесплатно.
Я думал, что смогу добиться этого, внедрив IDataErrorInfo
в EntityObject
, к которому привязаны поля, и установив параметр ValidatesOnDataErrors=True
во всех моих привязках. .
К сожалению, это неработает, потому что, как объяснено здесь: Обзор привязки данных MSDN — проверка данных под заголовком «Процесс проверки»
5) Механизм привязки устанавливает исходное свойство.
6) ...... Это момент, когда проверяются привязки, у которых для параметра ValidatesOnDataErrors установлено значение true.
Мне это кажется очень глупым — зачем вам проверять данные после того, как они уже были «зафиксированы» в объекте? Я часами искал способ получить желаемое поведение... Кто-нибудь делал что-то подобное раньше?
Итак, главный вопрос:
Как я могу проверить входные данные ДО обновления источника и отменить обновление, если проверка не удалась?