Из моего прочтения и попыток понять и реализовать MVVM и валидацию мне нужна помощь по следующему сценарию.
Просмотр - Пользовательский интерфейс (ожидается)
Модель - на основе таблицы данных и с помощью OnColumnChanging тестирует требования проверки по столбцам (эта часть работает без проблем)
ViewModel - склеить, соединяет модель с видом, это тоже работает.
Для каждого из элементов управления текстовым полем у меня есть соответственно двухстороннее связывание с таблицей данных, текущей строкой (все еще без проблем), и она показывает данные, как и ожидалось. Флаги, в том числе: NotifyOnTargetUpdated, ValidatesOnDataErrors, ValidatesOnExceptions и NotifyOnValidationError, все имеют значение true.
Если я использую интерфейс и введу недопустимое значение, он правильно запускает проверку и помещает красную рамку вокруг элемента управления, показывая, что он не прошел.
Теперь проблема. Я запускаю форму и нажимаю кнопку «Добавить» (новая запись, пустые значения), теперь элементы управления текстовым полем включены для редактирования содержимого. Нажмите кнопку «Сохранить». Я хочу обновить все элементы управления, в которых отсутствуют «требуемые» данные. Так как моя модель представления привязана к столбцам таблицы данных и, исходя из моих показаний, вся проверка должна быть обработана в модели представления, как мне настроить свой сценарий.
Я не знаю, как принудительно установить, какие элементы управления связаны с соответствующими элементами управления, когда они никогда не получали фокус. Кроме того, исходя из других показаний, чтобы можно было проводить модульное тестирование, вы должны иметь возможность проводить тестирование в предположении, что пользовательского интерфейса никогда не будет. Таким образом, теоретически я мог бы автоматизировать создание моей модели представления, которая загружает мою модель данных, добавляет запись, пытается сохранить и принудительно заставляет что-либо проверять все «обязательные» поля.
Я близко? далеко??? Не совсем положительно по этому поводу.