覆盖 WPF DataGrid / ListCollectionView 中的排序

发布于 2024-10-07 04:26:41 字数 399 浏览 1 评论 0原文

我已经重写了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森林迷了鹿 2024-10-14 04:26:41

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

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

在该方法中,您可以调用 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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文