Шаблон MVVM

05.08.2014 at 05:25

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

Шаблон MVVM (Model — View — ViewModel) делит программу на три части:

  • Модель (Model) — непосредственно данные приложения. Здесь находятся классы данных, бизнес логика, взаимодействие с базой данных и т.д. Модель тоже должна разбиваться на логичекие слои, но это паттерн MVVM никак не регулирует.
  • Представление (View) — отвечает за отображение пользовательского интерфейса. В этой части находится разметка интерфейса.
  • Модель представления (ViewModel) — связывает представление и модель. В этой части происходит связывание элементов интерфейса с данными и обработка действий пользователя, влияющих на данные. Т.е. действие по добавлению новой записи — здесь. Действие по перемещению кнопок на тулбаре — в представлении.

Взаимодействие View и ViewModel использует следующие возможности WPF

Привязка данных

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

Команды

Для выполнения операций над отображаемыми данными ViewModel предоставляет свойства типа ICommand, на которые биндятся контроли представления.

Шаблоны данных

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

Связи между частями

  • Модель не знает ни про представление, ни про модель представления
  • Модель представления знает про модель
  • Представление знает про модель представления.
Tags: