Подтвердить что ты не робот

Улучшение производительности WPF DataGrid

В моем приложении .NET 3.5 WPF у меня есть WPF DataGrid, который будет заполнен 500 столбцами и 50 строками. Производительность приложения очень низок в прокрутке, или когда я делаю DataGrid.Items.Refresh() или при выборе строк.

Фактически для обновления макета потребуется около 20 секунд. Layout_Updated() событие будет срабатывать через 20 секунд.

Если я уменьшу столбцы до 50 или меньше, приложение будет очень отзывчивым. По моим результатам производительность напрямую связана с количеством столбцов.

Как улучшить производительность DataGrid?

4b9b3361

Ответ 1

Есть несколько вариантов, которые вы можете включить, чтобы помочь вам в объекте DataGrid

EnableColumnVirtualization = true
EnableRowVirtualization = true

Эти два являются основными, которые, я думаю, могут помочь. Затем попробуйте сделать привязку async

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

И, наконец, я слышал, что установка максимальной высоты и ширины может помочь даже в том случае, если она превышает максимальный размер экрана, но я не заметил разницы (требование было связано с автоматическим измерением размера)

MaxWidth="2560"
MaxHeight="1600"

Также никогда не ставьте DataGrid в ScrollViewer, потому что вы по существу потеряете виртуализацию. Дайте мне знать, если это поможет!

Ответ 2

Проверьте, есть ли у вас свойство ScrollViewer.CanContentScroll 'False'. Установка этого свойства в false отключает виртуализацию таким образом, что ухудшит производительность вашей Data-grid. Для получения дополнительной информации обратитесь к CanContainScroll

Ответ 4

IsAsync = True} "быстрее после использования этого оператора, приложение получает много записей за короткое время, оно сработало для меня...