覆盖WPF DataGrid / ListCollectionView中的排序

时间:2010-12-09 15:37:22

标签: wpf sorting datagrid listcollectionview

我已经将ListCollectionView重写为延迟加载仅显示所需的项目。

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

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

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

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

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

是否有一种简单的方法可以拦截DataGrid中的排序或(更好)ListCollectionView,并以某种方式自己完成?

1 个答案:

答案 0 :(得分:0)

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

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

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