0

私は Windows 8 Store XAML/C# アプリケーションを作成しており、Windows Surface デバイスでのテスト中に、アプリケーションのページ間の移動が非常に遅いことがわかりました。

アプリケーションは MVVM パターンに従い、SQLite を使用します。私が最初に考えたのは、速度を低下させていたのは SQLite へのデータ アクセスではないかということでした。

C# コードとデータ アクセス コードをすべて取り除いたので、XAML シェルだけが残りました。

これを行った後も、ページ間を移動するときにページの読み込みが遅いことがわかりました。

私は 1 ページに約 60 個のコントロール (TextBoxes、Combos、および CheckBox) を持っているので、それは大きなことではなく、読み込みに 1 ~ 2 秒かかります。大したことではないように聞こえるかもしれませんが、これは注目に値する一時停止であり、データ アクセス コードはありません。

XAML ページの描画/読み込みを高速化するためのヒントはありますか?

前もって感謝します。

4

1 に答える 1

0

問題は、ページのルート コンテナーとして Grid + ScrollViewer を維持すると、何も仮想化できないということです。

ただし、この Grid + ScrollViewer を GridView (デフォルトでスクロールをサポート) に置き換え、GridView.ItemsPanel を VirtualizingStackPanel に設定することができます。

これには、コードのリファクタリングが少し必要になります。

1 つの解決策は、フォームをコントロールの「グループ」に分割することです。たとえば、フォームの目的がユーザー プロファイルの編集である場合、「個人情報」グループと「専門情報」グループを作成できます。フォームのグループ階層を作成したら、GridView をこれらのグループにバインドするだけで、virtualizingStackPanel は、表示するコントロールのみを表示/インスタンス化するジョブを実行します。

于 2013-04-19T14:46:54.843 に答える