2012-05-09 4 views
0

Я тестирую различные способы проверки, и у меня возникла проблема с новым интерфейсом INotifyDataErrorInfo.Проверка с исключениями по сравнению с IDataErrorInfo и новым INotifyDataErrorInfo

При записи, например, связанного текстового поля, которое принимает только 10 символов. Я пишу 11 символов и выкладываю. Валидация ударяет и помещает текстовое поле в красный цвет и т. Д. Теперь я не хочу писать это недопустимое значение до источника этой привязки, но если я этого не делаю, я сразу получаю значение в сбросе текстового поля на последнее действительное значение. Это похоже на то, что привязка делает UpdateTarget на его привязке, даже если произошла ошибка.

Используя ValidatesOnExceptions и исключение throwing в setter, я получаю поведение, которое мне нужно. Связывание не обновляет его значение от источника, если исключения были выбраны в установщике. Это оставляет недопустимое значение в текстовом поле, чтобы я мог работать с ним, чтобы сделать его действительным. Я думаю, что это намного лучше, чем хранить недопустимое значение в базовом объекте.

Вопрос в том, почему IDataErrorInfo и новый INotifyDataErrorInfo ведут себя таким образом, что он обновляет цель из источника, несмотря на наличие ошибок? Могу ли я заставить его вести себя скорее как ValidatesOnExceptions?

мне нужно INotifyDataErrorInfo из-за других функций, таких как проверка асинхронном ...

ответ

2

Если вам необходимо проверить значение до того, как было совершено на источник, то вам нужно будет создать пользовательские правила проверки и установить ValidationStep для RawProposedValue или ConvertedProposedValue.

Для получения дополнительной информации см. Документацию по телефонам Validation Process и ValidationStep.

Смежные вопросы