0

私は約 614 のグリッド コントロールを保持するスクロール ビューを持っています (各グリッドが本の特定の場所を指しているブック インデックスとして使用されます)。

コンテンツはすべてのテキストブロック内で静的です。問題は、そのすべてのコンテンツをロードすると、電話がしばらく無反応になることです...そのページをロードして別のページからナビゲートするのに時間がかかります。

すべてのアイテムを正しく表示するための別のソリューションが必要です。また、600 の各グリッド ビューには、ブック内のページを指すことができる独自のクリック イベント ハンドラーがあります。

私はそれを行うためのいくつかの難しい方法について読みました.インデックスを非常に「背の高い」画像としてロードし、その中にインデックスを書き込んでから、ユーザーがどこをタップしたかを検出し、そこからインデックスページを計算できるのではないかと考えていました. それは効率的ですか?それとも何か他のものがありますか?

4

2 に答える 2

2

何が起こっているかというと、スクロール ビューが 600 個のアイテムすべてを繰り返し処理して、各エントリの高さを測定し、スクロール バーをレンダリングする大きさを認識していることです。

この場合、WP7 が可視アイテムのみをレンダリングする前に、ListBox を使用することをお勧めします。それでも、2000 行に達したときのパフォーマンスの問題について聞いたことがあります。

仮想化がどのように機能するかに興味がある場合は、Samuel Jack が (WP7 向けではありませんが) 拡張性に優れたものを書いていますが、彼が下した決定についての詳細な記事もあります。

https://github.com/samueldjack/VirtualCollection/tree/master/VirtualCollection/VirtualCollection

彼の記事を参照してください。

  1. データの仮想化とステルス ページング

  2. Silverlights バーチャル コレクション

  3. 仮想化ラップ パネル

于 2012-08-20T01:31:57.327 に答える
0

2つの観察可能なコレクションAとを想定しBます。AコレクションをUIにバインドします。コレクションを埋めるたびにB。UIが更新されるたびにクリアになりAます。UIがロードされると、イベントトリガーを介して、からのアイテムの入力を開始しますB -> A。これは、監視可能なコレクションであり、INotifyPropertyChangedを正しく使用している場合、アイテムはUIに1つずつ表示され始めます。(Lazy Loading)。実装に応じて、このアプローチを変更できます。私自身もこのアプローチに従っています。それがあなたにも役立つことを願っています。

于 2012-08-20T03:32:02.957 に答える