0

C#+xaml で Windows 8 アプリケーションを作成しているときに、ちょっとした問題が発生しました。私のアプリには 1 つのメイン ページがあり、左側のナビゲーション パネルとしての ListView と右側のフレームの 2 つの部分に分かれています。これらはすべてPC 設定パネルに少し似ています。ただし、1 つの違いがあります。フレーム内のページに十分なコンテンツがあり、スクロール可能な場合、ナビゲーション パネルを折りたたんでアイコンのみの状態にするアニメーションを実行します (全幅でテキストとアイコンがある場合)。

それで、ここに問題があります。最初のページにいて、パネルが折りたたまれているとしましょう。次に、2 ページ目に移動し、パネルの全幅状態に戻らなければなりません。ただ、フレーム内にコンテンツを表示すると同時に行っているため、アニメーションのフリーズが少しあり、GridView が多くのアイテムを取得すると、それが非常に目立ちます。したがって、アニメーションは途中でフリーズし、GridView はすべての項目の画像をレンダリングしてから続行します。

私が思いついたこの問題を解決する唯一の方法は、アニメーションの完了後にナビゲーションを行うことです。見栄えがよくないので、まず白紙ページに移動し、アニメーションを実行してから、目的のページに移動します。しかし、この解決策はまだ間違っているように感じられ、サスペンドから再開した後のアニメーションにはまだいくつかの問題があります。

では、GridView のレンダリングがアニメーションに干渉しないようにする方法はありますか? ありがとう、そして私の英語でごめんなさい。

4

1 に答える 1

1

ページの NavigationCacheMode を Required に設定し、Opacity プロパティを使用して Frame を非表示にしながら、すべてのページをナビゲートしてプリロードすることができますが、これを初めて実行するときは遅くなります。各ページでデコードおよびレンダリングする必要があるビットマップ ピクセルの数も制限するようにしてください。他のすべてが失敗した場合は、WinRT XAML Toolkit の AlternativeFrame コントロールの Preload() メソッドが役立つかどうかを確認してください。

于 2013-04-22T02:50:01.177 に答える