Проверка формы WPF перед обновлением исходного кода с использованием IDataErrorInfo

Я пытаюсь реализовать элегантную проверку формы в приложении C#/WPF/Entity Framework 4.0. У меня есть классическая форма (некоторые текстовые поля и флажки) и кнопка сохранения.
Я хочу обновить источник (и базу данных) только тогда, когда пользователь нажимает «Сохранить», и я также хочу запускать проверку формы только тогда, когда пользователь нажимает «Сохранить».

Я установил все свои привязки с помощью параметра UpdateSourceTrigger=Explicit. Я также поместил все привязки в BindingGroup.

Когда пользователь нажимает кнопку «Сохранить», я запускаю метод UpdateSourcesгруппы привязки — это вызывает UpdateSourceдля каждой привязки. В этот момент (до завершения обновления исходного кода) я хочу, чтобы проверка формы выполнялась, а ошибки выделялись в графическом интерфейсе. Если ошибок ввода нет, обновление должно пройти бесплатно.

Я думал, что смогу добиться этого, внедрив IDataErrorInfoв EntityObject, к которому привязаны поля, и установив параметр ValidatesOnDataErrors=Trueво всех моих привязках. .

К сожалению, это неработает, потому что, как объяснено здесь: Обзор привязки данных MSDN — проверка данных под заголовком «Процесс проверки»

5) Механизм привязки устанавливает исходное свойство.

6) ...... Это момент, когда проверяются привязки, у которых для параметра ValidatesOnDataErrors установлено значение true.

Мне это кажется очень глупым — зачем вам проверять данные после того, как они уже были «зафиксированы» в объекте? Я часами искал способ получить желаемое поведение... Кто-нибудь делал что-то подобное раньше?

Итак, главный вопрос:
Как я могу проверить входные данные ДО обновления источника и отменить обновление, если проверка не удалась?

6
задан ChrFin 23 May 2012 в 15:10
поделиться