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