かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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