WPF: проверка на экране - PullRequest
2 голосов
/ 26 января 2010

Какую технику или библиотеку вы рекомендуете для проверки на экране. То есть проверка, которая очень хорошо видна пользователю.

Мои требования:

  1. В проверке должен быть способ указать пользователю, какие поля имеют проблему.
  2. В валидации должен быть способ указать пользователю, как решить проблему.
  3. Проверка должна поддерживать сравнительные значения, такие как TextboxA> Textbox B.
  4. Проверка должна поддерживать пользовательскую логику, например «Если CheckBoxC отмечен, ListBoxD должен быть пустым».
  5. Иногда, хотя и не всегда, пользователь может сохранить запись, даже если проверка не удалась.

Ответы [ 2 ]

3 голосов
/ 26 января 2010

Комбинация использования IDataErrorInfo и ValidationRules должна соответствовать всем вашим критериям.

1 & 2 - легко обрабатывается с использованием стандартных методов отображения валидации WPF. Для справочной информации я прочитал бы статью MSDN Джоша Смита , в частности, он показывает несколько способов обработки отображения информации проверки.

3 & 4 - легко обрабатывается через IDataErrorInfo . Этот интерфейс позволяет вам использовать любую логику, необходимую для отображения проверки, и может комбинировать несколько свойств в правилах проверки.

5 - Это просто отслеживание того, какие правила мешают сохранению, а какие нет. Вам нужно будет обработать это напрямую, но опять-таки, здесь может помочь IDataErrorInfo, поскольку вы можете использовать известный набор, который разрешает сохранение, и позволяет предотвратить любую другую проблему.

Для простых случаев, Правила валидации облегчают жизнь. Их можно комбинировать с IDataErrorInfo , однако, для хорошего сочетания простой и расширенной логики для сложных случаев.

0 голосов
/ 30 апреля 2011

Вам могут понравиться BookLibrary и EmailClient примеров приложений WPF Application Framework (WAF) . Они используют интерфейс IDataErrorInfo в сочетании с атрибутами .NET DataAnnotations для определения правил проверки.

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