もう1つの画面遷移
ここからは、前のサンプルアプリには入れられなかったナビゲーション方式とアーキテクチャを紹介していきます。サンプルコードはSample02.Tabs.MvvmLightをご覧ください。
タブナビゲーション
Windows Template Studioウィザードの最初の選択「プロジェクトの種類」で[Pivot and Tabs]を選ぶと、画面上部のタブでナビゲーションするアプリになります。タブナビゲーションは、「ストア」アプリ(ウィンドウの横幅が広いとき)やWindows 10標準の「アラーム & クロック」アプリなどで使われています。
タブナビゲーションは、画面上部のタブをクリックするとそのページが表示されます(次の画像)。ウィンドウの横幅が不足しているときは、自動的にタブの部分が横スクロール可能になります。
ハンバーガーメニューとの違い
このタブナビゲーションと前述のハンバーガーメニューとでは、見た目や使い勝手の違いがあるだけでなく、アプリを作る上での大きな違いがあります。
Windows Template Studioが生成するハンバーガーメニューは、既定では画面遷移すると以前のページは破棄されます。画面遷移してから戻ってくると新しくページが作り直されるため、初期状態に戻ってしまいます。そこで、先ほどMainページのテキストボックスの文字列で行ったように画面の状態を復元するコードを書いたり、あるいは、ページが破棄されないような設定をしたりします(サンプルコードのMainページ以外はそのようにしてあります)。
対して、タブナビゲーションでは画面遷移しても以前のページは破棄されません。生成されたプロジェクトのPivotPage.xamlを見てもらうとよいのですが(次の画像)、アプリの起動時からすべてのページが存在していて、どれを表示するかをタブで切り替えているだけです。ページの寿命を考えなくてよいのは楽ですが、その代わり、メモリーの消費量が過大にならないように注意しなければなりません。