かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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