Как мне работать с WPF Validation и MVVM? - PullRequest
1 голос
/ 26 января 2012

У меня есть страница WPF (как мой вид) в модели MVVM. Представление представляет собой форму ввода со многими текстовыми полями. У меня есть собственный ValidationRule, созданный для проверки каждого текстового поля и отображения предупреждений всплывающей подсказки соответственно. Однако я хочу, чтобы кнопка «Фиксация» была включена только тогда, когда все валидаторы прошли. Прямо сейчас, IsEnabled моей кнопки «Зафиксировать» привязан к DataContext на основе других критериев. Как добавить предостережение «быть включенным только тогда, когда все валидаторы пройдут», когда мой IsEnabled уже связан так?

IsEnabled="{Binding IsDataLoaded}"

Ответы [ 3 ]

5 голосов
/ 26 января 2012

Предполагая, что вы связываете кнопку с командой, заставляет команду реализовывать CanExecute , поэтому она возвращает значение true только тогда, когда действуют правила валидации.

4 голосов
/ 26 января 2012

Ваша кнопка Commit должна быть привязана к RelayCommand в вашем ViewModel, и просто установите CanExecute() в значение true, только если this.IsDataLoaded и this.IsValid

CommitCommand = new RelayCommand(
    param => SaveChanges()
    param => this.IsDataLoaded && this.IsValid
);

Для проверкиесли модель представления действительна или нет, я бы предложил использовать IDataErrorInfo

0 голосов
/ 26 января 2012

Вы можете использовать MultiBinding с нужным вам конвертером

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