Вчера я прослушал этот подкаст с кодом скотоводства на MVC, MVP, MVVM . Меня поразила идея отправить весь объект ViewModel в валидатор, который ничего не делает, кроме проверки всех полей в нем и отправки. это обратно.
- Кто-нибудь реализовал этот тип шаблона проверки?
- как это выглядело технически?
Я подумываю о расширении этой идеи, имея также «FormPreparer», который получает весь ViewModel после того, как в него введены данные модели, метаданные поля и другие данные пользователя и контекста, затем этот «FormPreparer» подготавливает все поля в форме, которая будет в представлении, например,
- поля даты представлены элементами управления DatePicker
- поля электронной почты представлены текстовыми полями с подтверждением электронной почты
- и, например, поле Customer является раскрывающимся списком клиентов
метаданные определяют следующее для каждого поля:
- тип (текст, дата, дата / время, продолжительность, электронная почта, URL, клиент)
- элемент управления (текстовое поле, многострочное текстовое поле, раскрывающийся список, радиокнопки, флажок, кнопка щелчка)
- метка (например, «Имя»)
- helptext (например, «это число, которое вы найдете в верхней части формы 4A»)
- пример ("# 123ABCD")
- отображение вкладки (например, для форм, состоящих из нескольких областей вкладок)
- область отображения (например, для форм, которые группируют поля в области)
- порядок отображения (например, порядок полей в группе)
- значение (например, "Джим")
- данные автозаполнения (массив имен, который должен отображаться, когда пользователь начинает печатать)
- статус поля (только чтение, редактирование, скрытие)
«FormPreparer» объединит всю эту информацию и затем представит данные в представление, которое:
- показывает все данные формы в соответствующих элементах управления (даты в виде указателей даты, описания в многострочных текстовых полях и т. Д.)
- автоматически выполняет все проверки
- будет отображать только те поля, которые разрешено видеть текущему пользователю, и будет позволять ему редактировать только те данные, которые ему разрешено редактировать
- и т.д.
Кто-нибудь программировал приложение WPF / MVVM по этим направлениям?