MainPageクラス
起動時に表示されるMainPageクラスは、CalculatorプロジェクトのViewsフォルダーにあります。フォルダー名から分かるように、このフォルダーに収められたクラスはMVVM(Model-View-View Model)パターンのViewにあたります。MVVMパターンでは、ViewにView Modelを結びつけます(次の図)。電卓アプリではどのような手順で結び付けているのでしょう? それを解き明かすのはちょっと長い道のりになりますが、お付き合いください。
MainPageクラスの実装を見てみると、まずコンストラクター(次の画像)の冒頭で、ApplicationViewModelクラスのインスタンスを作ってメンバー変数m_modelに格納しています(下の画像の行番号67、メンバー初期化子リスト)。ApplicationViewModelクラスはCalcViewModelプロジェクトにあり、MVVMパターンのView Modelに相当します。このView Model(ApplicationViewModelオブジェクト)をViewに結び付ける話は、ApplicationViewModelクラスの説明をした後になります。
さらにMainPageクラスのコンストラクターでは、ApplicationViewModelオブジェクトのPropertyChangedイベントにMainPageクラスのOnAppPropertyChangedメソッドを結び付けています(上の画像の行番号73)。これで、View Modelのプロパティに変化があったときに、OnAppPropertyChangedメソッドが呼び出されるようになります。
さて、AppクラスでNavigateメソッドを使ってMainPageオブジェクトを表示させると、MainPageクラスのOnNavigatedToメソッド(次の画像)が自動的に呼び出されます。
MainPageクラスのOnNavigatedToメソッドでは、設定ファイルなどから最初に表示する電卓のモードを決定してローカル変数initialModeに格納し、そのinitialMode変数を引数としてView ModelのInitializeメソッドを呼び出しています(上の画像の行番号111)。呼び出されたView Modelの方では、指定された電卓モードになるように自分自身(View Model)を更新してから、View ModelのPropertyChangedイベントを発火させます。すると、上述したように、MainPageクラスのOnAppPropertyChangedメソッドが呼び出されることになります(後述)。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
-
biac(ばいあっく)
HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
