Я изучаю MVVM «на лету», но у меня возникают проблемы с поиском правильного расположения класса валидатора.Где я могу поставить валидацию
У меня есть проект с моей бизнес-логикой и WPF-проектом. Последний создается после MVVM-шаблона.
Целью приложения является считывание данных с внешнего устройства и подтверждение этих данных. Методы проверки (1 для каждого свойства устройства) хранятся в BL.
В GUI мне нужно показать свойства устройства и не являются ли они действительными.
Что я сейчас:
- 1 вид (
MainWindowView
) - 1 ViewModel (
MainWindowViewModel
) - 1 модель (
DeviceModel
)
MainWindowViewModel
имеет свойство типа DeviceModel
, Это свойство используется для отображения данных устройства в представлении. В настоящее время у меня есть несколько HasValidPropXxxx свойства типа bool
, которые связаны с Background
-свойством соответствующего текстового поля (с использованием IValueConverter
от bool
к Color
). Поскольку это было всего 5 объектов, я думал, что они были в хорошем месте.
Теперь требования изменились (очевидно), и я должен показать и проверить гораздо больше свойств устройства. Я думал создать класс DeviceValidator
, в котором хранятся все свойства HasValidPropXxxx и выполняет ли проверки валидации BL.
То, что я хотел бы знать:
- Это хороший способ мышления (особенно в отношении MVVM)
- В каком месте я должен поставить этот валидатор: Модели? ViewModels? Другая папка?
Мне нужно изменить фон соответствующего текстового поля/метки, когда свойство устройства недействительно. Возможно ли использование этих интерфейсов? На первый взгляд я не понимаю, как это сделать. – Koen
У меня уже работает BoolToBrushConverter, но мне было интересно, могу ли я - используя IDataErrorInfo - изменить цвет 1 текстового поля, вне зависимости от других свойств ошибки. В этот момент у меня есть свойство IsValidPropXxxx для каждого свойства. Глядя на ваше обновление, это проверка для всего объекта. Я кооректируюсь? – Koen
@Koen: см. Ссылку, в которой будет описана ошибка ErrorTemplate http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errortemplate.aspx – Ravuthasamy