WPFK WPFK - 6 days ago 4
C# Question

Improve WPF DataGrid performance

In my

.NET 3.5
WPF
Application, I have a
WPF
DataGrid
which will be populated with 500 columns and 50 rows.
The performance of App is very very poor in scrolling, or when I do
DataGrid.Items.Refresh()
or in selecting rows.

Actually App will take around 20 sec to Update Layout.
Layout_Updated()
event will trigger after 20 sec.

If I reduce the columns to 50 or less, App will be very responsive. As per my findings performance is directly related to column count.

How do I improve the
DataGrid
performance?

Answer

There are a few options you can turn on to help you on your DataGrid object

EnableColumnVirtualization = true
EnableRowVirtualization = true

These two are the main ones I think might help. Next try making your binding async

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

And lastly, I've heard that setting a maximum height and width can help even if it above the max screen size, but I didn't notice a difference myself (claim had to do with auto size measuring)

MaxWidth="2560"
MaxHeight="1600"

Also never put a DataGrid in a ScrollViewer, because you will essentially lose virtualization. Let me know if this helps!