0

監視可能なコレクションにバインドするときに許容できないほど遅い WPF データグリッド (.Net または Toolkit) を使用しています。約 3500 行 10 列で、内容を表示するのに 1 分以上かかります。すべてが、データの UI 仮想化を行っていないことを示しています。しかし、なぜそうなのかはわかりません。

私はグループ化を使用していません。固定高さのパネルに配置することで、グリッドの高さが含まれていることを確認しました。DataGrid にすべての仮想化プロパティを設定しました。snoop をチェックインしたところ、これらのプロパティが設定されています。ただし、snoop は、ロード後にビジュアル ツリーに数千のデータグリッド行があることも示しています。これがスヌープの使用によるものかどうかはわかりません。何が起こっているのかを知るために AQTime を使用してみました。スローダウンは私たちのコードではなく、システム コードにあるようです。しかし、WPF が何をしているのかを簡単に確認する方法が見つかりません。私はグリッドを取り除き、.Net 4 DataGrid とツールキット DataGrid の両方を試しました。両方とも、初期データを表示するのが許容できないほど遅くなります。行の高さと列の幅を固定しようとしました。これも大差ありません。

仮想化がオンになっていることを確認するにはどうすればよいですか? また、仮想化がオフの場合、なぜオフになっているのですか? コードの外で起こっていることをデバッグするにはどうすればよいですか? WPF が何をしているのかを確認する方法はありますか? (WPF パフォーマンス スイートを使用してみましたが、何らかの理由でアプリケーションの出力が得られません)。

私はアイデアが不足しています。UI に 10 行しか表示されない場合、これほど遅くはありません。

誰でも助けることができますか?

4

2 に答える 2

1

ScrollViewer.CanContentScrollが に設定されていないことを確認してくださいFalse

説明については、 ScrollViewer.CanContentScroll を false に設定して仮想化を無効にする理由を参照してください。

ところで: WPF 4.5 では、VirtualizingPanelに役立つ新機能が導入されています。

于 2012-07-09T09:09:29.150 に答える