WPFのMVVMとは何か
UIとUI以外を分離するアーキテクチャー
アプリケーション = UI処理 + UI処理以外
UI処理以外をModelと呼ぶ。
アプリケーション = UI処理 + Model
UI処理の中をViewとViewModelに分離する。
アプリケーション = View + ViewModel + Model
アプリケーションのすべてのプログラム、データはView,
View,ViewModel,Modelの依存は一つのみ。
View -> ViewMdel -> Model
(ViewはViewModelに依存、
・View
Viewは画面表示と入力を担当する。
ViewはViewModelを知っている。
=
=ViewはViewModelにアクセスできる。
Viewの表示するデータはViewModelが持つ。
Viewの入力処理(Command)
・ViewModel
ViewModelはUIの中の表示と入力以外全部を担当する。
ViewModelはViewを知らない。
=
=ViewModelはViewにアクセスできない。
Viewの表示するデータはViewModelが持つ。
Viewの入力の対応処理プログラム(Command)
UIとModelの橋渡しをするのはViewModelの仕事。
ViewModel = データ + プログラム
ViewModelの仕事
Viewとのやり取り
UIの仕事
Modelとの橋渡し
だけ
ViewModelがViewに公開するもの
プロパティ
Command
NotifyChangedイベント
ViewModelはModelを知っている。
=
=ViewModelはModelにアクセスできる。
ViewとViewModelをつなぐのはバインド機構
バインド機構はアプリーケーションの外側
・Model
Model = データ + プログラム
ModelはViewModelを知らない
= ModelはViewModelのインスタンスの参照を持たない
= ModelからViewModelにアクセスはできない。
Modelが公開するもの
メンバ変数
プロパティ
メソッド
デリゲート
イベント
ViewModelとModel間については規定はない。
ModelはUIが切り替わっても動作できるように作ってもよい
重要なのはUIとUI以外を分離すること。