かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

Universal Windows Platform appでページをキャッシュする

UWPのアプリ(WinRTのアプリでも同じですが)で、画面遷移の戻るをしたときに、毎回画面のインスタンスが作られるなんて勿体ない!ということがあるかもしれません。

そんな時は、PageのNavigationCacheModeプロパティを使用することができます。このプロパティをEnabledかRequiredにすることで、Frameを使った画面遷移で戻ってきたときにインスタンスが作られるかキャッシュが使われる(つまりインスタンスが新たに作られない)かを選択できます。

NavigationCacheModeプロパティは、ページのコンストラクタで設定します。

public MainPage()
{
    this.InitializeComponent();
    this.NavigationCacheMode = NavigationCacheMode.Enabled;
}

こうすることで、キャッシュされるようになります。キャッシュされるページ数はFrameのCacheSizeプロパティで指定できます。App.xaml.csのFrameを作成している箇所を以下のように書き換えることで任意の数のキャッシュを保持することができます。

// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame { CacheSize = 2 };

上記の書き方だと2ページぶんキャッシュするということですね。

EnabledとRequiredの違い

NavigationCacheModeのEnabledとRequiredの違いですが、Requiredを指定すると必ずキャッシュが使われるようになります。そうCacheSizeを溢れてても。

VS2015を学習するためのコンテンツ

UWP appを作るための開発環境VS2015をさらっと学ぶためのコンテンツを紹介しておきます。

www.microsoftvirtualacademy.com