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?
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!