MVVM: отделить модель от ViewModel - PullRequest
9 голосов
/ 09 июля 2011

Я только начал изучать WPF MVVM, используя Prism и Unity. Отключение представления от модели представления работает довольно хорошо, но я не понимаю, как соединить мою модель представления и мою модель. Я не считаю нужным просто создавать новый объект EntityObject прямо в моей модели представления. Я уже пролистал образец WAF BookLibrary, но он довольно громоздкий и добавляет множество дополнительных вещей вокруг основной части (связывание между view и viewmodel), и документы Prism не произносят ни слова (насколько я читал оно) о viewmodel - модель взаимодействия.

Кто-нибудь знает хороший источник, который объясняет, как правильно использовать viewmodel и модель, или я могу дать какой-нибудь совет?

С наилучшими пожеланиями

Jay

1 Ответ

10 голосов
/ 09 июля 2011

У каждого будет свое мнение по этому поводу. Лично я не против использования модели непосредственно в модели представления. Для меня вся идея модели представления состоит в том, чтобы расширить вашу модель таким образом, чтобы она могла использоваться представлением.

Простым примером этого был бы объект person, он имел бы свойства модели, такие как, например, имя и возраст. Когда я подхожу к этапу модели представления, я могу добавить к нему свойства, такие как видимость, которые не имеют смысла для самой модели.

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

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

Как я уже говорил, у других людей будут разные идеи, все верны, и вам решать, какой из них соответствует вашим потребностям.

...