Использование IDataErrorInfo и установка стиля Validation.HasError - PullRequest
1 голос
/ 17 июля 2009

В WPF с использованием IDataErrorInfo и стиля я хочу создать форму, в которой я могу предоставить конечному пользователю три разных статуса при проверке данных Чтобы сделать сценарий более понятным

1) У меня есть текстовое поле рядом с ним. У меня есть значок, который сообщает конечному пользователю, какой тип вводимого текстового поля ожидает - Начальный статус с информационным значком

2) Как только пользователь вводит данные, он проверяет их и решает, действительны ли они или нет - в большинстве случаев будет отображаться значок крестика (X) с неверными данными

3) Поскольку проверка выполняется на UpdateSourceTrigger="PropertyChanged", она будет превращать крестик в зеленую галочку, как только будет подтверждена

т.е. 1011 *

[         ] i (tooltip- Any valid user name )
[Ga       ] X (tooltip- Invalid user name. Must be 5 char long)
[Gaurav   ] * (it will show only correct icon, meaning valid value)

Как я могу добиться этого, используя IDataErrorInfo и Стиль, я пытался это сделать, но как только моя форма загружается, она делает недействительными все данные и в первый раз показывает значок крестика. Я хочу показать разные подсказки и разные иконки для трех состояний (Initial info, Invalid data, Valid data)

Ответы [ 2 ]

1 голос
/ 15 марта 2011

IDataErrorInfo не содержит никаких средств представления трех состояний. Он знает только «ошибка» и «нет ошибки».

Лучшее решение может заключаться в том, чтобы обойти использование IDataErrorInfo с помощью следующего:

  1. Создайте свойство для каждого проверенного поля, которое предоставляет статус трех состояний для его связанного поля.
  2. Привязать ContentControls в представлении к этим свойствам с тремя состояниями.
  3. Установить единый стиль для всех этих новых ContentControls.
  4. Используйте триггеры в стиле, чтобы назначить свойство ContentControl.ContentTemplate для состояния ошибки и действительного состояния. Для начального состояния используйте Setter в самом стиле, чтобы ничего не отображать.

Возможно, вам также придется создать свойства для текста всплывающей подсказки каждого поля.

0 голосов
/ 17 июля 2009

отличный пример вы можете найти здесь Приложения WPF с шаблоном проектирования Model-View-ViewModel

...