覆盖 WPF DataGrid / ListCollectionView 中的排序
我已经重写了 ListCollectionView 以仅延迟加载那些需要显示的项目。
我在 DataGrid 中使用此 ListCollectionView 来显示和编辑项目。
这很好用,就像它应该的那样。
我的问题:我希望用户能够通过单击标题列对 DataGrid 进行排序。由于我仅在需要时才延迟加载项目,因此 ListCollectionView 在对尚未加载的项目进行排序方面做得很糟糕。
解决此问题的一种方法是加载所有项目,但我不想这样做,因为在相当长的时间内加载的项目可能太多了。
相反,我想收到通知并告诉我的(远程)数据源将预先排序的项目交给我。
有没有一种简单的方法可以拦截 DataGrid 或(更好)ListCollectionView 中的排序并以某种方式自己完成?
I've overridden a ListCollectionView to lazy load only those items which are needed for display.
I'm using this ListCollectionView in a DataGrid to show and edit items.
This works nicely, just like it should.
My problem: I want the user to be able to sort the DataGrid by clicking on the header column. Since I lazy load the items only when I need them, the ListCollectionView does a bad job on sorting those items which has not been loaded yet.
One way to solve this would be to load all items, but I don't want to do that since this might be way too many items to load in a respectable time.
Instead I would like to get the notification and tell my (remote) data source to hand me the items pre-sorted instead.
Is there an easy way to intercept the sorting in either the DataGrid or (better) the ListCollectionView and do it myself, somehow?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您需要数据虚拟化,codeplex 上有一个专门的库。
您所要做的就是实现以下方法:
在该方法中,您可以调用 WCF 服务并返回排序和截断的列表。
这个库并不容易理解,但它可以工作。
If you need for a data virtualization, there is a special library for this on codeplex.
All that you have to do is to implement the following method:
Inside this method you can call a WCF-service and return a sorted and truncated list.
This library isn't easy to understand, but it works.