3

WPF データグリッドのスクロールに問題がありました。いくつかの分析により、 ScrollViewer.CanContentScroll = true が原因であることがわかりました。削除して false にすると、スクロールの問題が修正されました。しかし昨日、誤って 50k レコードをバインドしたために、WPF アプリケーションのメモリ フットプリントが 1.3Gb を超えて増加したバグを分析していました。それでも、10,000 レコードをバインドする能力に疑問を呈しました。ユーザーはページネーションを望んでいません。(それは要件であり、それについてはあまりできません!)

ScrollViewer.CanContentScroll = false を設定すると、UI 仮想化が false になります。これにより、WPF がすべてのレコードをバインドし、画面にレンダリングします。その結果、メモリ フット プリントが爆発的に増加し、パフォーマンスの問題が発生します。

今のところ、バインドするレコードが最小限の場合は ScrollViewer.CanContentScroll= false を設定し、そうでない場合は true に設定します。

要するに、スクロールの問題または UI の仮想化で行き詰まっています。両方を修正できるものはありますか?データの仮想化について読んだことがありますが、本当にそこまでする必要があるのでしょうか? 私たちを助けることができる.net4.0から箱から出して何か不足していますか?

4

1 に答える 1

2

この質問の受け入れられた回答を確認すると...回答の「それらの間で選択する」セクションに、アイテムが表示されていないときにカスタムデコレータの可視性を非表示に設定するためのヒントが提案されています。

しかし、それ以外は... あなたは正しいです。スムーズなスクロールまたは仮想化のいずれかが得られます...両方ではありません。

さらに、データグリッドでアイテムをグループ化する場合は、便利なパフォーマンスの向上のために、私がしばらく前に投稿したこの回答を確認してください。

于 2011-09-02T20:28:33.413 に答える