none
WPF DataGrid Виртуализация RRS feed

  • Вопрос

  • Не подскажите как обстоят дела в WPF DtaaGrid с выводом большого количества строк, так метод предложенный здесь http://bea.stollnitz.com/blog/?p=426 затыкается на таблицах с полумиллионном строк. Может есть какие решения данной задачи еще? 
    9 января 2011 г. 22:04

Ответы

  • Посмотрите статью WPF Datagrid – Load and Performance.

    Установите свойство VirtualizingStackPanel.VirtualizationMode для DataGrid в Recycling

    Вложенное свойства зависимостей VirtualizingStackPanel.VirtualizationMode указывают, как панель в ItemsControl виртуализирует его дочерние элементы. По умолчанию объект VirtualizingStackPanel создает контейнер для каждого видимого элемента и удаляет его, когда он больше не нужен (например, когда элемент при прокрутке покидает видимую область). Если объект ItemsControl содержит много элементов, процесс создания и удаления контейнеров элементов может снизить производительность компьютера. Если свойство VirtualizingStackPanel.VirtualizationMode имеет значение Recycling, объект VirtualizingStackPanel повторно использует контейнеры элементов, а не создает их заново.

    Для связи [mail]
    • Помечено в качестве ответа GB_DEV 13 января 2011 г. 15:00
    13 января 2011 г. 6:33

Все ответы

  • Посмотрите статью WPF Datagrid – Load and Performance.

    Установите свойство VirtualizingStackPanel.VirtualizationMode для DataGrid в Recycling

    Вложенное свойства зависимостей VirtualizingStackPanel.VirtualizationMode указывают, как панель в ItemsControl виртуализирует его дочерние элементы. По умолчанию объект VirtualizingStackPanel создает контейнер для каждого видимого элемента и удаляет его, когда он больше не нужен (например, когда элемент при прокрутке покидает видимую область). Если объект ItemsControl содержит много элементов, процесс создания и удаления контейнеров элементов может снизить производительность компьютера. Если свойство VirtualizingStackPanel.VirtualizationMode имеет значение Recycling, объект VirtualizingStackPanel повторно использует контейнеры элементов, а не создает их заново.

    Для связи [mail]
    • Помечено в качестве ответа GB_DEV 13 января 2011 г. 15:00
    13 января 2011 г. 6:33
  • Впринципе очень интересно первая ссылка, а на практике использовали ли что нибудь?
    13 января 2011 г. 15:01
  • К сожалению, я не сталкивался с подобными задачами.
    Для связи [mail]
    13 января 2011 г. 22:50
  • Recycling Работает великолепно! Особенно если структура грида "тяжелая", с нестандартными строками и ячейками, с иерархией контролов внутри. Единственное, замечание - при первой загрузке данных память "кушается" изрядно, например до 400 Мб, но потом очищается до 20Мб (без учета голого приложения). GC похоже не спешит работать в процессе назначения гриду большого Source.

    Однако, самое "вкусное" - это потом скорость работы грида - скроллинг, редактирование, все стало в порядке. Если раньше грид вызывал у меня боль даже с учетом топового 6-ти ядерного i7, то с Recycling + виртуализацией все в порядке, величина Source замечается только на сортировках.

    29 ноября 2012 г. 11:21