Проверка формы в WPF - PullRequest
       12

Проверка формы в WPF

1 голос
/ 18 января 2010

Я уже некоторое время работаю с WPF и шаблоном MVVM.Я испытываю трудности с получением проверки работающим "обычным" способом:

1) Я реализую интерфейс IDataErrorInfo в моей ViewModel.XAML выглядит примерно так:

<TextBox Grid.Column="1"
         Grid.Row="1"
         Text="{Binding Path=ProjectKey, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" />

Проблема здесь в том, что при использовании триггеров LostFocus и PropertyChanged текстовое поле проверяется до того, как пользователь когда-либо перейдет на этот элемент управления.Это означает, что если я проверяю пустые поля, пользователь увидит много красного, когда они впервые откроют форму.В идеале, ввод будет проверен только после первого «потерянного фокуса» или «изменения свойства», или после нажатия кнопки «Отправить».

2) Другая проблема - проверка в конце, когда пользователь нажимает"Отправить".Есть определенные вещи, которые вы хотите проверить прямо перед отправкой в ​​базу данных, например, дубликаты.Я понимаю, что могу использовать UpdateSourceTrigger = Explicit и вызвать метод UpdateSource на всех элементах управления.Мне интересно, есть ли подходящий способ сделать это в шаблоне MVVM.Похоже, такого кода не должно быть в ViewModel, поскольку он очень специфичен для View ...

Любые идеи были бы хорошими.Я много искал в Интернете, но не могу найти правильного решения ...

1 Ответ

0 голосов
/ 16 августа 2011

Для номера один ваши свойства в ViewModel должны быть инициализированы со значением перед передачей в конструктор

public double Property1 {get; set;}

    public ViewModel()
{
    Property1 = 0;
}

Для номера два кнопка отправки не должна быть включена, пока все поля не пройдут проверку. Если у вас есть поле, которое является уникальным в базе данных, проверьте его при изменении свойства, отобразите и отобразите ошибку, если оно не прошло. Вы можете иметь логическое свойство, которое привязано к свойству IsEnabled кнопки, и установить для него значение true, как только все поля пройдут проверку.

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