В шаблоне MVP у Предъявителя есть интерфейс Представления, таким образом, предъявитель может назвать iview. DoSomething ().. Что относительно в шаблоне MVVM?
Согласно диаграмме UML John Gossman http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx, ViewModel не имеет интерфейса Представления. Так, походит на ViewModel, и Представление должно быть передано через Привязку только. (или используйте присоединенное свойство или поведение смешения или и т.д.).
Что делает Вас, парни думают?
Я согласен с Джоном Госсманом. Модель ViewModel «общается» с View только через привязки. Фактически - ViewModel вообще не должен заботиться о View. Он должен просто сделать данные доступными через свойства, а View решает, к чему они будут динамически привязываться в ViewModels. Если ViewModel хочет сообщить View что-то, это должно происходить неявно через Bindings.
Аналогичный вопрос был задан час назад - здесь .
Обычно это происходит - через события в INotifyProperty, если ничего больше.
Вся цель MVVM заключается в том, чтобы значительно сократить количество кода в кодовом классе вашей формы WPF или пользовательского элемента управления. Идея заключается в том, что все, что обрабатывалось бы представлением в классическом MVC/MVP, может быть перенесено в VM с помощью комбинации связывания данных и/или команд. В моем общем использовании MVVM мне удалось полностью удалить весь code-behind в моих формах/пользовательских элементах управления, и VM не имеет никаких прямых знаний о представлении, которым управляет. Если у вас есть ситуация, которая действительно не может быть решена с помощью привязки данных или команды, пожалуйста, уточните ваш первоначальный вопрос, и я (или один из многих, многих более талантливых MVVM'щиков здесь) постараюсь направить вас в правильном направлении.
Может ли ViewModel взаимодействовать с View в шаблоне MVVM?
Да, но без привязки. Допускается введение интерфейса IView для связи.
Паттерн MVVM собирается переместить логику из представления в модель представления. Таким образом, мы можем провести модульное тестирование этой логики.