Устранение проблемы с прокруткой DataGrid приводит к проблемам производительности и памяти - PullRequest
3 голосов
/ 03 сентября 2011

У нас возникла проблема с прокруткой сетки данных WPF.После некоторого анализа обнаружил, что виновником является ScrollViewer.CanContentScroll = true.Убрав и сделав его ложным, проблема с прокруткой была исправлена.НО вчера я анализировал ошибку, связанную с увеличением объема памяти приложения WPF до 1,3 Гб из-за ошибочного связывания 50 тыс. Записей.Тем не менее это ставит под сомнение возможности связывания даже 10k записей.Пользователи не хотят нумерации страниц.(это требование, я ничего не могу с этим поделать!)

При дальнейшем обнаружении читателем настройка ScrollViewer.CanContentScroll = false делает виртуализацию пользовательского интерфейса ложной.который заставляет WPF связывать все записи и отображать их на экране.Это приводит к разболтанным отпечаткам памяти и проблемам с производительностью.

Пока мы думали, что связанные записи минимальны, тогда установите ScrollViewer.CanContentScroll = false, иначе установите его в true.

Короче говоря: мы застряли с проблемой прокрутки или виртуализации пользовательского интерфейса.Есть ли что-то, что может исправить оба?Читали о виртуализации данных, но нужно ли нам идти так далеко?я что-то упустил из коробки от .net4.0, что может помочь нам?

1 Ответ

2 голосов
/ 03 сентября 2011

Если вы проверите принятый ответ на этот вопрос ... В разделе ответа «Выбор между ними» есть подсказка, позволяющая настроить видимость пользовательского декоратора на скрытое, когда элемент не отображается.

Но кроме этого ... ты прав. Вы либо получаете плавную прокрутку или виртуализацию ... не оба.

Кроме того, если вы группируете элементы в своей таблице данных, проверьте этот ответ Я недавно отправил сообщение для удобного улучшения производительности.

...