Странное поведение WPF Validation.Error и Validation.HasError - PullRequest
2 голосов
/ 04 июня 2009

У меня есть TextBox, который должен содержать только допустимое целое число. Он проверен с использованием пользовательского ValidationRule. Проблема, с которой я сталкиваюсь, заключается в том, что когда TextBox.Text является недопустимым, скажем «3a», и я набираю другое «a», тогда присоединенное свойство TextBox Validation.HasError меняется с TRUE -> FALSE -> TRUE. Мое программное обеспечение реагирует всякий раз, когда Validation.HasError имеет значение FALSE, но TextBox.Text в этот момент времени имеет значение «3a», что нежелательно.

Вот как я вижу вещи: TextBox.Text = "3a" и Validation.HasError = TRUE. Теперь я набираю дополнительный «а», и происходит следующее. Сначала процесс Validation удаляет существующее ValidationError и вызывает событие Validation.Error с ValidationErrorEventArgs.Action = ”Removed”. Теперь Validation.HasError = FALSE. Сразу после этого процесс проверки добавляет новый ValidationError и вызывает событие Validation.Error с ValidationErrorEventArgs.Action = ”Added”. Теперь Validation.HasError = TRUE снова.

Все, что я могу сделать, это реагировать на события Validation.Error и затем проверять вложенное свойство Validation.HasError исходного объекта, чтобы увидеть, является ли оно истинным или ложным. К сожалению, Validation.HasError возвращает false, когда TextBox.Text = ”3a”, что явно не является допустимым целым числом.

Любые идеи были бы очень полезны. Спасибо:)

1 Ответ

0 голосов
/ 10 октября 2011

Возможно, вы захотите проверить, добавлена ​​или удалена ошибка, если ваша проверка зависит от этого:

(e.Action == ValidationErrorEventAction.Added) doStuff();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...