Модель представления должна объявлять свои собственные свойства и скрывать особенности модели от представления. Это дает вам максимальную гибкость и помогает предотвратить просачивание проблем типа модели в классы модели. Обычно классы модели представления инкапсулируют модель путем делегирования. Например,
class PersonModel {
public string Name { get; set; }
}
class PersonViewModel {
private PersonModel Person { get; set;}
public string Name { get { return this.Person.Name; } }
public bool IsSelected { get; set; } // example of state exposed by view model
public PersonViewModel(PersonModel person) {
this.Person = person;
}
}
Помните: модель не должна ничего знать о модели представления, которая ее потребляет, и модель представления не должна знать ничего о представлении, которое ее потребляет. Представление не должно знать ничего о моделях, скрывающихся на заднем плане. Таким образом, инкапсулируйте модель за свойствами в модели представления.