我已经将ListCollectionView重写为延迟加载仅显示所需的项目。
我在DataGrid中使用此ListCollectionView来显示和编辑项目。
这很好用,就像它应该的那样。
我的问题:我希望用户能够通过单击标题列对DataGrid进行排序。由于我只在需要时懒惰加载项目,因此ListCollectionView在排序那些尚未加载的项目方面做得不好。
解决这个问题的一种方法是加载所有项目,但我不想这样做,因为这可能是在相当长的时间内加载太多项目。
相反,我想获取通知并告诉我的(远程)数据源将预先排序的项目交给我。
是否有一种简单的方法可以拦截DataGrid中的排序或(更好)ListCollectionView,并以某种方式自己完成?
答案 0 :(得分:0)
如果您需要数据虚拟化,codeplex上有一个特殊的库。 您所要做的就是实现以下方法:
public IList<T> LoadRange(int startIndex, int count,
SortDescriptionCollection sortDescriptions, out int overallCount)
在此方法中,您可以调用WCF服务并返回已排序和截断的列表。 这个库不容易理解,但它有效。