39

私の.NET 3.5 WPFアプリケーションには、WPF DataGrid500列と50行が入力されるがあります。アプリのパフォーマンスは、スクロール時、または行の選択時で非常に劣っていDataGrid.Items.Refresh()ます。

実際、アプリはレイアウトを更新するのに約20秒かかります。Layout_Updated()イベントは20秒後にトリガーされます。

列を50以下に減らすと、アプリは非常に応答性が高くなります。私の調査結果によると、パフォーマンスは列数に直接関係しています。

DataGridパフォーマンスを向上させるにはどうすればよいですか?

4

5 に答える 5

90

DataGridオブジェクトで役立つようにオンにできるオプションがいくつかあります

EnableColumnVirtualization = true
EnableRowVirtualization = true

これらの2つは、私が役立つと思われる主なものです。次に、バインディングを非同期にしてみてください

ItemsSource="{Binding MyStuff, IsAsync=True}"

そして最後に、最大の高さと幅を設定すると、最大画面サイズを超えていても役立つと聞きましたが、私自身は違いに気付きませんでした (主張は自動サイズ測定に関係していました)。

MaxWidth="2560"
MaxHeight="1600"

また、本質的に仮想化が失われるため、DataGridを に決して入れないでください。ScrollViewerこれが役立つかどうか教えてください!

于 2012-12-07T14:32:35.170 に答える
10

プロパティがScrollViewer.CanContentScroll設定されているかどうかを確認してくださいFalse。このプロパティを false に設定すると、仮想化が無効になり、データ グリッドのパフォーマンスが低下します。詳細については、このCanContentScrollを参照してください。

于 2016-12-12T06:04:15.860 に答える
0

一度に50行すべてをロードする代わりに、これを試してみてください

http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization

于 2012-12-07T14:06:06.957 に答える