WPF Data virtualizing ListView

В нашем текущем приложении WinForms мы показываем миллионы записей в ListView, используя виртуализацию. Строки загружаются из БД по мере их запроса. Это хорошо работает, с хорошей производительностью.

Это showstopper для перехода на WPF для нас. Нам нужна виртуализация данных в ListView, например WinForms 2.0.

Знаете ли вы приличный сторонний элемент управления или относительно простой способ сделать это со встроенными элементами управления? Он не должен быть DataGrid, достаточно простого ListView.

Обратите внимание, что я говорю о виртуализации пользовательского интерфейса, это виртуализация данных.

Ответ 1

Статья Виртуализация данных WPF должна быть именно то, что вы ищете, я просто реализовал ее довольно легко, и она работает.

Ответ 2

Xceed DataGrid для WPF поддерживает поддержку виртуализации данных.

Ответ 3

Это описание Ultimate ListBox для WPF из Xceed:

Интеллектуальное извлечение виртуальных исходных данных:

Автоматическое извлечение данных получает только записи из удаленного источника данных, если они видны (виртуализация данных). Это значительно уменьшает количество передаваемых данных, что увеличивает воспринимаемую скорость списка. Также уменьшает нагрузку на сервер.

Ответ 4

Просто добавьте следующие свойства в ваше объявление списка в XAML.

<ListView 
      VirtualizingPanel.IsVirtualizing="True"
      VirtualizingPanel.IsVirtualizingWhenGrouping="True"
      VirtualizingPanel.VirtualizationMode="Recycling"
      ScrollViewer.IsDeferredScrollingEnabled="True" >
</ListView>