Вид обновления проверки привязки с ошибками - PullRequest
1 голос
/ 31 октября 2011

Из моего прочтения и попыток понять и реализовать MVVM и валидацию мне нужна помощь по следующему сценарию.

Просмотр - Пользовательский интерфейс (ожидается)

Модель - на основе таблицы данных и с помощью OnColumnChanging тестирует требования проверки по столбцам (эта часть работает без проблем)

ViewModel - склеить, соединяет модель с видом, это тоже работает.

Для каждого из элементов управления текстовым полем у меня есть соответственно двухстороннее связывание с таблицей данных, текущей строкой (все еще без проблем), и она показывает данные, как и ожидалось. Флаги, в том числе: NotifyOnTargetUpdated, ValidatesOnDataErrors, ValidatesOnExceptions и NotifyOnValidationError, все имеют значение true.

Если я использую интерфейс и введу недопустимое значение, он правильно запускает проверку и помещает красную рамку вокруг элемента управления, показывая, что он не прошел.

Теперь проблема. Я запускаю форму и нажимаю кнопку «Добавить» (новая запись, пустые значения), теперь элементы управления текстовым полем включены для редактирования содержимого. Нажмите кнопку «Сохранить». Я хочу обновить все элементы управления, в которых отсутствуют «требуемые» данные. Так как моя модель представления привязана к столбцам таблицы данных и, исходя из моих показаний, вся проверка должна быть обработана в модели представления, как мне настроить свой сценарий.

Я не знаю, как принудительно установить, какие элементы управления связаны с соответствующими элементами управления, когда они никогда не получали фокус. Кроме того, исходя из других показаний, чтобы можно было проводить модульное тестирование, вы должны иметь возможность проводить тестирование в предположении, что пользовательского интерфейса никогда не будет. Таким образом, теоретически я мог бы автоматизировать создание моей модели представления, которая загружает мою модель данных, добавляет запись, пытается сохранить и принудительно заставляет что-либо проверять все «обязательные» поля.

Я близко? далеко??? Не совсем положительно по этому поводу.

Ответы [ 2 ]

1 голос
/ 31 октября 2011
0 голосов
/ 31 октября 2011
  1. Проверка должна проводиться в двух местах.Один в ModelView (Проверка ввода пользователя), второй в Model проверка согласованности модели, если требуется для конкретного сценария.

  2. У вас есть каждое текстовое поле (TextProperty), привязанное к свойству ModelView.TextBox (я предполагаю) имеет свойство зависимости, которое позволяет вам указывать эфир, чтобы сигнализировать об ошибке на UI или нет.

Что вам нужно сделать, IMHO, немедленно внутри обработчика события Add установить значения по умолчанию для связанного ModelView объекта.То, что произойдет: для каждого элемента управления, включая требуемый, будет настроен, thow через DataBinding визуализируется на UI, значение по умолчанию.Для обязательных полей значение по умолчанию может быть просто недопустимым, поэтому обязательное поле сразу появится с сигналом Error, сигнализирующим пользователю о наличии обязательных полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...