Может ли ViewModel общаться с View в шаблоне MVVM? - PullRequest
6 голосов
/ 17 февраля 2010

В шаблоне MVP Presenter имеет интерфейс View, поэтому докладчик может вызывать iview.DoSomething (). Как насчет шаблона MVVM?

Согласно UML-диаграмме Джона Госсмана http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx, ViewModel не имеет интерфейса View. Таким образом, кажется, что ViewModel и View должны быть переданы только через Binding. (или используйте прикрепленное свойство или смешанное поведение и т. д.).

Что вы, ребята, думаете?

Ответы [ 4 ]

7 голосов
/ 17 февраля 2010

Я согласен с Джоном Госсманом. То, как ViewModel «общается» с View, только через привязки. На самом деле - ViewModel не должен заботиться о представлении вообще. Он должен просто сделать данные доступными через свойства, и именно View должен решить, с чем он будет динамически связываться в ViewModels. Если ViewModel хочет что-то сказать View, это должно происходить неявно через Bindings.

Подобный вопрос был задан час назад - здесь .

1 голос
/ 20 февраля 2010

Может ли ViewModel общаться с View в шаблоне MVVM?

Да, но в отрыве. Для связи разрешено вводить интерфейс IView .

Шаблон MVVM собирается переместить логику из View в ViewModel. Таким образом, мы можем провести модульное тестирование этой логики.

1 голос
/ 17 февраля 2010

Обычно это происходит - изменяются события в INotifyProperty, если ничего больше.

1 голос
/ 17 февраля 2010

Целью MVVM является значительное уменьшение количества кода в вашем классе code-behind вашей формы WPF или пользовательского элемента управления. Идея состоит в том, что все, что будет обрабатываться представлением в классическом MVC / MVP, может быть преобразовано в виртуальную машину с помощью комбинации привязки данных и / или команд. В моем общем использовании MVVM мне удалось полностью удалить весь выделенный код в моих формах / пользовательских элементах управления, и виртуальная машина не имеет прямого представления о представлении, которым она управляет. Если вы столкнулись с ситуацией, которую действительно нельзя обработать с помощью привязки данных или команды, пожалуйста, уточните ваш начальный вопрос, и я (или один из многих, многих более талантливых MVVM'еров здесь) попытаюсь указать вам правильное направление .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...