1

私はwp7で検索アプリケーションを作っています。すべてのレコードのデータは、ユーザーコントロールにバインドされています。私はページ番号を与える代わりに、無限の読み込みを導入しました。したがって、UserControlのインスタンスの数が画面内で増加すると、あるページから別のページ(プレビューや設定ページなど)への移行や、そのページから現在のページへの移行が遅くなります。私はデザインを変更することはできません(無限のロードコンセプト)。データバインディングによるページ移動の遅さ

このシナリオをどのように処理するのですか?コントロールの可視性を変更するのはどうですか?参考やご提案は高く評価されます。

メモ私はWPFとSilverlightにタグ付けをしました。バインドは同じ方法で行われるため、これらのシナリオを処理したと思われます。

EDITこれをチェックしてください。question、私に尋ねられます。リストボックスにUserControlがあるため、垂直オフセットは維持されていません。だから私はそれの周りにscrollViewer ItemsControlを使用する以外のオプションがありませんでした。 ItemsControlには5〜6人のユーザーコントロールのリストが含まれていて、インターンはその中にitemsControlを持っています。そのような場合に仮想化が行われない可能性があります。私は正しい?実際に作成されるUserControlの、これはVirtualization、一つだけのコピー(またはいくつかのコピー)を使用して、仮想化

によって行われますWPFで

+2

VirtualizingStackPanelはあなたの友人です。 –

答えて

2

、および他のユーザーコントロールに切り替える実際にはその制御DataContextをスワップアウトに縛られている。実際には新しいUserControlは作成されません。

たとえば、VirtualizingStackPanelが100,000個あり、一度に10個しか表示されない場合は、約14個のアイテム(スクロールバッファ用の余分なアイテム)しかレンダリングされません。スクロールすると、14個のコントロールの背後にあるDataContextが変更されますが、実際のコントロール自体は決して置き換えられません。対照的に、正規のStackPanelは、ロードされると実際に100,000個のアイテムをレンダリングし、アプリケーションのパフォーマンスを大幅に低下させます。

Virtualizing an ItemsControlについてのこの質問は、おそらく正しい方向に進むことができます。

+0

この情報をありがとう、私はそれを確認し、あなたに連絡します。私は私の質問を少し更新しました。仮想化がその場合に起こるかどうか確認してください。 – Prakash

+0

@Prakash 'ItemsControl'は、デフォルトでアイテムを仮想化していませんが、私の回答ではどのように仮想化できるのかを示すリンクが表示されます – Rachel

1

this postを見て、私はリコが提供するソリューションがあなたが探しているものだと信じています。 :)

+0

このケースをどのように助けることができるのか正確には分かりません。 – Prakash

+0

申し訳ありませんが、あなたの質問に間違いがありました。「追加する」ボタンが1つしかないと思っていました...なぜユーザーコントロールごとに1つ必要なのか尋ねてもよろしいですか? –

+0

各ユーザーコントロールには異なるカテゴリがあります。彼が望むものをもっと読み込むことがユーザーの関心です。 – Prakash

関連する問題