さらに背景を追加するために、WinRT XAML Toolkitライブラリには2つのコントロールがAlternativeFrameあります。これは、UIナビゲーションを処理するためにWindows 8 SDKですぐに使用できるベースとクラスAlternativePageの代替実装であり、Webでページをナビゲートする方法と似ています。ブラウザ。これらの代替コントロールのAPIは、基本コントロールのAPIとほぼ同じですが、非同期開発モデル、ページ遷移アニメーション、および要求される前のページのプリロードのサポートが追加されています。FramePage
現在、このPreload()メソッドは特定のタイプのページをバックグラウンドでプリロードしてキャッシュに配置し、Navigate()メソッドが呼び出されてそのタイプのページに移動すると、新しいページをインスタンス化する代わりに、キャッシュ内のページが使用されます。すぐに表示できますが、キャッシュが空になり、次に同じページに移動するときに、再度プリロードする必要があります。これは、プリロードされたページに頻繁に戻らず、ページが大量のメモリを使用する場合にうまく機能しますが、そのページをキャッシュに保持したい場合は、そのサポートが組み込まれていません。元のPageクラスにはNavigationCacheModeプロパティがあり、ページが最初に読み込まれたときにキャッシュに保持されるように構成できます。これは適切なオプションですが、AlternativePageまだそのサポートはありません。暇な時間があるので、今日はそこに追加することを考えています。あなたは私がそれをするのを待つことを決めるかもしれません。その他のオプションは次のとおりです
- フレーム内でページに移動するのではなく、ナビゲーションフレームの上にページを表示します。そうすれば、必要に応じてページを表示/非表示にすることができます。
- または、標準のフレーム/ページコントロールに切り替えて設定すると
NavigationCacheMode="Required"、機能Pageが失われますが、メモリに永久に残りますPreload()。
- または、ツールキットを自分で変更できます
- または、ページのコンテンツを自分でキャッシュすることもできます。ページのコンテンツを
Content何らかのキャッシュ(たとえば、Dictionary<Type,UIElement>ページタイプをコンテンツにマップするキャッシュ)に保存し、ページから移動するときにページから削除します(コンテンツをnullに設定します)。ページに移動し、コンテンツがキャッシュにあるときに、ページに追加し直します。その場合、キャッシュからコンテンツを取得する場合は、をContent個別にし、コンストラクターでのUserControl呼び出しをスキップすることをお勧めします。これは、コンテンツを1つしか持つことができず、個別に定義すると、自動生成されたコードを取得できるためです。名前付き要素への簡単なアクセスを許可し、イベントハンドラーを登録するなどで実行されます。InitializeComponent()ContentUserControlInitializeComponent()