CodeZine(コードジン)

特集ページ一覧

Windows電卓の中はどうなっているのだろう?(前編)
~オープンソースのコードを見てみよう

UWPアプリ開発の最前線 第13回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/07/26 11:00

目次

MainPageクラス

 起動時に表示されるMainPageクラスは、CalculatorプロジェクトのViewsフォルダーにあります。フォルダー名から分かるように、このフォルダーに収められたクラスはMVVM(Model-View-View Model)パターンのViewにあたります。MVVMパターンでは、ViewにView Modelを結びつけます(次の図)。電卓アプリではどのような手順で結び付けているのでしょう? それを解き明かすのはちょっと長い道のりになりますが、お付き合いください。

>MVVMの相互関係
MVVMの相互関係(Creating Mobile Apps with Xamarin.Forms book - Summary of Chapter 18. MVVMより)

 MainPageクラスの実装を見てみると、まずコンストラクター(次の画像)の冒頭で、ApplicationViewModelクラスのインスタンスを作ってメンバー変数m_modelに格納しています(下の画像の行番号67、メンバー初期化子リスト)。ApplicationViewModelクラスはCalcViewModelプロジェクトにあり、MVVMパターンのView Modelに相当します。このView Model(ApplicationViewModelオブジェクト)をViewに結び付ける話は、ApplicationViewModelクラスの説明をした後になります。

MainPageクラスのコンストラクター
MainPageクラスのコンストラクター(MainPage.xaml.cpp

 さらにMainPageクラスのコンストラクターでは、ApplicationViewModelオブジェクトのPropertyChangedイベントにMainPageクラスのOnAppPropertyChangedメソッドを結び付けています(上の画像の行番号73)。これで、View Modelのプロパティに変化があったときに、OnAppPropertyChangedメソッドが呼び出されるようになります。

 さて、AppクラスでNavigateメソッドを使ってMainPageオブジェクトを表示させると、MainPageクラスのOnNavigatedToメソッド(次の画像)が自動的に呼び出されます。

MainPageクラスのOnNavigatedToメソッド
MainPageクラスのOnNavigatedToメソッド(MainPage.xaml.cpp

 MainPageクラスのOnNavigatedToメソッドでは、設定ファイルなどから最初に表示する電卓のモードを決定してローカル変数initialModeに格納し、そのinitialMode変数を引数としてView ModelのInitializeメソッドを呼び出しています(上の画像の行番号111)。呼び出されたView Modelの方では、指定された電卓モードになるように自分自身(View Model)を更新してから、View ModelのPropertyChangedイベントを発火させます。すると、上述したように、MainPageクラスのOnAppPropertyChangedメソッドが呼び出されることになります(後述)。


関連リンク

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:UWPアプリ開発の最前線

もっと読む

著者プロフィール

  • biac(ばいあっく)

    HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。 2014/10~2019/6 Microsoft MVP (Windo...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5