У меня есть элемент управления, который имеет ValidatesOnDataErrors = true
и ValidatesOnExceptions = true
. У меня также есть кое-что, смотрящее коллекцию Validation.Errors
на эту привязку.
Пользователь вводит значение, которое может быть преобразовано (без исключения), но недопустимо (IDataErrorInfo сообщает об ошибке). Ошибка появляется в коллекции ошибок и отображается, как и ожидалось.
Затем пользователь вводит значение, которое не может быть преобразовано (исключение выдается). IDataErrorInfo по-прежнему сообщает о той же ошибке, что и раньше (поскольку значение модели не изменилось).
В этом последнем случае я бы предпочел видеть в списке только ошибку исключения, но допускал бы наличие и исключения, и ошибки данных (в любом порядке).
Однако в действительности происходит только то, что в списке появляется только ошибка данных, которая в результате дает пользователю вводящее в заблуждение сообщение об ошибке (поскольку это ошибка предыдущего введенного значения, а не текущего).
Внутренняя трассировка, кажется, что когда происходит второе действие пользователя, ошибка исключения добавляется в список, затем снова удаляется и заменяется ошибкой данных. Ни в коем случае обе ошибки не появляются в списке одновременно.
Есть идеи, как получить из этого желаемое поведение?
(Откат на шаг: я пытаюсь объединить проверку IDataErrorInfo [так как это более удобно для тестов на уровне домена), но все же обращая внимание на исключения пользовательского интерфейса [в противном случае он игнорировал бы случай, когда пользователь вводит что-то совершенно глупое]. Я не хочу доводить до крайности превращение каждого свойства ВМ в строку или другую подобную ерунду.