2

我重写了 ListCollectionView 以仅延迟加载显示所需的那些项目。

我在 DataGrid 中使用这个 ListCollectionView 来显示和编辑项目。

这很好用,就像它应该的那样。

我的问题:我希望用户能够通过单击标题列对 DataGrid 进行排序。由于我仅在需要时才延迟加载项目,因此 ListCollectionView 在对尚未加载的项目进行排序方面做得不好。

解决此问题的一种方法是加载所有项目,但我不想这样做,因为这可能是在可观的时间内加载的项目太多。

相反,我想收到通知并告诉我的(远程)数据源将预先排序的项目交给我。

有没有一种简单的方法来拦截 DataGrid 或(更好)ListCollectionView 中的排序并自己做,不知何故?

4

1 回答 1

0

如果您需要数据虚拟化,codeplex上有一个专门的库。您所要做的就是实现以下方法:

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

在此方法中,您可以调用 WCF 服务并返回已排序和截断的列表。这个库不容易理解,但它可以工作。

于 2010-12-09T17:53:34.493 回答