2

WinRTXAMLToolkitの作成者に質問があります。これは私を大いに助けてくれました。
WinRTでリッチページを操作するための最良のメカニズムは何ですか?

条件は次のとおりです。

  1. 背景にたくさんの要素といくつかの高解像度画像がある約2ページがあります。明らかに、コンテンツの読み込みに時間がかかります。そのためAlternativeFrame.Preload()、ツールキットのメソッドを使用します。
  2. また、これらのページは最も頻繁に使用されます。

そのため、これらのページを常にプリロード(作成、描画、塗りつぶし)するか、必要な場合、またはページを保存する独自のページキャッシュを作成するかを選択する前に立っています(おそらく私は盲目で、ツールキットにはすでにこの機能がありますか?)。
この問題のベストプラクティスと、おそらく3番目の方法があるかどうかをアドバイスできますか?

4

1 に答える 1

2

さらに背景を追加するために、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()
于 2013-03-12T21:48:22.257 に答える