Поскольку я разрабатываю приложение WPF с MVVM, я никогда не представляю модель через открытую собственность viewmodel. Во всяком случае, после того, как я только что пришел в мир Silverlight и WCF RIA, я нашел новый метод для проверки данных, который называется атрибутом Required. (есть и другие атрибуты)
На этот раз вместо создания логики валидации внутри viewmodel, я могу сделать почти логику валидации внутри самой модели.
public class TestUserPM {
[Key]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string Email { get; set; }
}
После этого все, что мне нужно во ViewModel, это выставить открытое свойство типа TestUserPM и позволить привязке View напрямую к модели.
Я думаю, что это не элегантное решение, но оно может работать, и нет необходимости создавать утомительную проверку внутри свойства viewmodel.
Есть ли недостатки этого метода?
Обновление 1
Я только что нашел 1 обратную сторону, может быть, там есть решение. Я хочу связать команду кнопки, например, кнопку сохранить в команду в ViewModel, но эта кнопка может выполняться тогда и только тогда, когда вся информация действительна. Из моего опыта работы с WPF MVVM, у которого есть вспомогательный класс, я назову OnCanExecuteChanged()
внутри public string this[string columnName]
из IDataErrorInfo
.
Как мне справиться с такого рода требованиями?