WPF (.net 3.5) ValidationRule, IDataErrorInfo - PullRequest
3 голосов
/ 25 июня 2010

Я пытаюсь найти лучший способ проверки ввода пользователя, и я смотрю на ValidationRule и IDataErrorInfo.У меня есть виртуальная машина и модель, и я хочу убедиться, что пользователь не вводит буквенные символы в несколько текстовых полей с двойными (или целочисленными) значениями.

У меня 3 проблемы

1) Когда я использую ValidationRule, метод возвращает «ValidationResult», но к чему это приведет?Хранится ли оно как свойство где-нибудь?

2) Если я использую IDataErrorInfo и ввожу некоторые буквенные символы, он никогда не вызывается (если вводятся числа). Это ожидается?*

* (я подумал, может быть, здесь может помочь преобразователь значений, но мне кажется, что я смешиваю вместе две разные концепции)

3) На самом деле я хочу сделать проверку вконец, когда пользователь нажимает «Сохранить» и проверяет все значения.Так что, возможно, использование этих двух методов не то, что мне нужно согласно 1838300 .Это правда, это действительно только для проверки «на лету»?

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

Есть какие-нибудь мысли или идеи?

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Есть пара вещей, о которых вам нужно знать:

Когда тип свойства dependency не совпадает с базовым значением - автоматическое преобразование выполняется, если отсутствует преобразователь значения.

Это все часть обычного механизма связывания.Таким образом, поскольку ваш ввод в текстовое поле не преобразуется должным образом в целые / двойные с альфа-символами, генерируется исключение, которое будет непрерывно генерироваться до тех пор, пока вы не исправите значение свойства зависимостей (здесь свойство Text TextBox) - установщик свойствабазовый объект данных сейчас никогда не достигается.

Вы можете проверить это поведение, если посмотрите в окне вывода исключения, когда вы изменяете текст в текстовом поле.См. Эту статью, чтобы узнать, как правильно реализовать валидацию и IDataErrorInfo: ссылка .

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

Вас может заинтересовать BookLibrary пример приложения WPF Application Framework (WAF) .В нем показано, как использовать проверку в WPF и как управлять кнопкой «Сохранить» при наличии ошибок проверки.

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