2013-02-19 3 views
5

У меня есть DataGrid, который имеет набор DataTable как свой ItemSource. В DataTable содержится 24 столбца и ~ 1600 строк (на самом деле мне придется загружать больше строк позже, но на данный момент это достаточно хлопотно).Виртуализация WPF DataGrid не работает должным образом?

Несмотря на установку виртуализации для активных столбцов и строк, DataGrid занимает около 30 секунд, чтобы отобразить эти 1600 строк. После этого прокрутка по вертикали работает нормально, горизонтально лагги, хотя вы ожидаете, что это будет наоборот.

Если я запустил профайлер памяти, я могу проверить, что большая часть памяти, используемой приложением, поступает из DataGridCells, Borders, ContentPresenters и Textblocks. Для меня это означает, что сетка не виртуализирует свои строки должным образом.

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

С нетерпением ждем любых предложений и предложений. Спасибо :)

+0

Являются ли все столбцы стандартными столбцами, означает только текст или некоторые из них содержат элементы управления, такие как «CheckBoxes» и т. Д.? – DHN

+0

Нет, два из них - это флажки. –

+0

Хм, затем попробуйте и удалите эти два столбца или измените их внешний вид на «стандартный». – DHN

ответ

5

Я решил проблему. My DataGrid сидел внутри ScrollViewer, в котором он растягивался бесконечно. Поэтому было обмануто думать, что все видно, поэтому он не будет виртуализировать свои предметы. Я удалил ScrollViewer (у DataGrid есть полосы прокрутки в любом случае), и теперь он работает безупречно.

1

Хм, хорошо, я не знаю, почему, но, очевидно, я должен добавить какой-то текст клей, чтобы отправить ответ здесь. Возможно, этот SO answer поможет вам.

Редактировать

Как дополнительный совет, который я хотел бы рекомендовать вам думать о своем подходе. Действительно ли нужно добавить 1.6k + элементы в DataGrid? Возможно, вам стоит подумать об отложенной загрузке.

+1

Да, я подумал об этом. Как ни странно, Winforms DataGrid, похоже, работает правильно. –

+0

Хорошо, а как насчет ссылки в ответе? – DHN

+0

Флажки не кажутся проблемой. Удаление указанных столбцов не помогло. –

Смежные вопросы