Переопределить сортировку в WPF DataGrid / ListCollectionView - PullRequest
1 голос
/ 09 декабря 2010

Я переопределил ListCollectionView, чтобы лениво загружать только те элементы, которые необходимы для отображения.

Я использую этот ListCollectionView в DataGrid для отображения и редактирования элементов.

Это прекрасно работает, как и должно.

Моя проблема: я хочу, чтобы пользователь мог сортировать DataGrid, щелкая столбец заголовка. Поскольку я лениво загружаю элементы только тогда, когда они мне нужны, ListCollectionView плохо выполняет сортировку тех элементов, которые еще не были загружены.

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

Вместо этого я хотел бы получить уведомление и сказать моему (удаленному) источнику данных вместо меня передать предварительно отсортированные элементы.

Есть ли простой способ перехватить сортировку в DataGrid или (лучше) в ListCollectionView и как-нибудь сделать это самому?

1 Ответ

0 голосов
/ 09 декабря 2010

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

public IList<T> LoadRange(int startIndex, int count, 
                SortDescriptionCollection sortDescriptions, out int overallCount)

Внутри этого метода вы можете вызвать WCF-сервис и вернуть отсортированный и усеченный список.Эту библиотеку непросто понять, но она работает.

...