SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UWPアプリ開発の最前線

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

ApplicationViewModelクラス

 MainPageクラスのコンストラクターでインスタンス化されるApplicationViewModelクラスの実装は、CalcViewModelプロジェクトにあります。名前が示すように、これがMVVMパターンのView Modelにあたります。いわば、抽象化したUIです。

 電卓アプリのView Modelは一つではありません。画面が複数のパーツに分けて作られていて、View Modelも画面のパーツごとに用意されています。次の図にその概要を示します(実際には、もっと細かいパーツに分かれています)。

ViewとView Modelの関係(概要)
ViewとView Modelの関係(概要)

 さて、前述したように、MainPageクラスが表示されるときにApplicationViewModelクラスのInitializeメソッドを呼び出します。Initializeメソッドは、引数に指定された表示モードを自分自身のModeプロパティにセットします(次の画像、行番号81)。

ApplicationViewModelクラスのInitializeメソッド
ApplicationViewModelクラスのInitializeメソッド(ApplicationViewModel.cpp

 Modeプロパティのセッターでは、OnModeChangedメソッドを呼び出しています(次の画像、行番号58)。

ApplicationViewModelクラスのModeプロパティ
ApplicationViewModelクラスのModeプロパティ(ApplicationViewModel.cpp

 OnModeChangedメソッドはちょっとごちゃごちゃしていますが、ここで必要に応じて表示モードごとのView Modelを生成しています(次の画像)。例えば、指定されたモードが標準電卓ならば(行番号125、最初の赤色下線部)、StandardCalculatorViewModelクラスのインスタンスを作ります(行番号130、2番目の赤色下線部)。

ApplicationViewModelクラスのOnModeChangedメソッド
ApplicationViewModelクラスのOnModeChangedメソッド(ApplicationViewModel.cpp

 OnModeChangedメソッドを抜けると、続いてRaisePropertyChangedメソッドを呼び出します(上記Modeプロパティのセッターを参照、行番号59)。するとイベントが発火し、前述したように、MainPageクラスのOnAppPropertyChangedメソッドが呼び出されることになります。

次のページ
再びMainPageクラス

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11538 2019/07/26 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング