(я знаю, что есть несколько близких дубликатов, но никто из них не смог мне помочь, пожалуйста, выслушайте меня)
У меня есть установщики моей модели, которые выдают соответствующие исключения, когда что-то пытается установить недопустимое значение. Это творит чудеса, когда пользователь вводит новое значение.
Однако, когда я создаю новый объект модели, начальное состояние может быть недопустимым (нет значения в описании и т. Д.). Это, конечно, не будет проверено, но без каких-либо попыток установить значение не будет выдано исключение для ExceptionValidationRule
, чтобы поймать.
Простые решения, которые у меня есть:
Поймать изменение в текущем объекте, запустить оценку типа Current.Value = Current.Value
, чтобы заставить часть .set_Value
выполнить и повторно проверить (таким образом, запуск ExceptionValidationRule
обновит состояние. Однако это грязно и неправильно
Поймать изменение в объекте и вызвать ручную проверку свойств по свойствам и
каким-то образом обновить HasError
и Validation.Errors
, что приведет к тому, что объект обновит свое визуальное состояние. Это больше похоже на взлом, чем на что-либо, и я не уверен, как это сделать
Теперь самая большая проблема в том, что я мог бы подключить что-то, что сработало бы в любой из этих ситуаций. Но они полностью нарушили бы мою структуру MVVM, я не имею ни малейшего понятия, как внедрить этот вид проверки прямо в MVVM.
- Я смотрел на создание своего собственного типа переплета, без игры в кости.
- Я смотрел на создание декоратора для захвата моих детей, может сработать: нужна дополнительная информация
- Я смотрел на
IDataError
реализации, для меня это не сработает, так как требует использования индексатора this[string]
, который будет конфликтовать с реализациями моего существующего объекта модели.
Так что у меня нет идей, и я обращаюсь к you SO, для некоторого понимания того, как решить эту проблему.