Шаблон MVVM
Шаблон MVVM преследует ту же цель, что и популярный шаблон MVC — разделение представления и данных. Ключевое отличие — использование особеностей WPF, которые позволяют сделать части программы более независимыми.
Шаблон MVVM (Model — View — ViewModel) делит программу на три части:
- Модель (Model) — непосредственно данные приложения. Здесь находятся классы данных, бизнес логика, взаимодействие с базой данных и т.д. Модель тоже должна разбиваться на логичекие слои, но это паттерн MVVM никак не регулирует.
- Представление (View) — отвечает за отображение пользовательского интерфейса. В этой части находится разметка интерфейса.
- Модель представления (ViewModel) — связывает представление и модель. В этой части происходит связывание элементов интерфейса с данными и обработка действий пользователя, влияющих на данные. Т.е. действие по добавлению новой записи — здесь. Действие по перемещению кнопок на тулбаре — в представлении.
Взаимодействие View и ViewModel использует следующие возможности WPF
Привязка данных
ViewModel является контекстом данных для View. Благодаря привязке данных, модель представления не нуждается в коде, который обновляет представление при изменении данных.
Команды
Для выполнения операций над отображаемыми данными ViewModel предоставляет свойства типа ICommand, на которые биндятся контроли представления.
Шаблоны данных
Благодаря механизму шаблонов данных в WPF, не нужно писать код, определяющий, какое именно представление будет использоваться для модели представления.
Связи между частями
- Модель не знает ни про представление, ни про модель представления
- Модель представления знает про модель
- Представление знает про модель представления.