Виртуализация WPF DataGrid с группировкой

Это - хороший список шаблонов (от Шаблоны Архитектуры приложений для предприятия книга):

http://martinfowler.com/eaaCatalog/

22
задан Community 23 May 2017 в 10:29
поделиться

2 ответа

Нет встроенной функции, которая позволяет вам включить виртуализацию пользовательского интерфейса, когда группировка включена в ListView или DataGrid. Если вы на секунду задумаетесь, это тоже имеет смысл. Как DataGrid группирует несуществующие элементы. Чтобы применить группировку, элемент управления должен будет загрузить всю коллекцию, что нарушит всю цель виртуализации. Лучшее, что вы, вероятно, можете сделать, - это предоставить какую-то виртуализацию в вашей модели просмотра (объект, который вы снова привязываете), в котором вы предоставляете только те данные, которые в настоящее время необходимы, плюс какие-то общие данные о количестве данных, которые существуют, а затем подделывают

С группировкой это может выглядеть примерно так: Когда группировка включена изначально, все группы будут свернуты. Таким образом, ваша модель просмотра должна предоставлять только один элемент для каждой группы. Просто чтобы убедиться, что представление содержит все существующие группы. Как только пользователь расширяет одну группу, ViewModel будет динамически пополнять элементы для этой группы. Это очень простой и базовый способ виртуализации, который не оптимален, но может стать хорошей отправной точкой. Это просто для иллюстрации подхода.

2
ответ дан 29 November 2019 в 04:12
поделиться

Как вы сказали, включение группировки отключит виртуализацию пользовательского интерфейса.

Не думаю, что вы найдете простой способ решить эту проблему. Я бы порекомендовал вам проверить один из доступных WPF DataGrid, например XCeeed , в котором эта функция может быть встроена в их управление.

0
ответ дан 29 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: