Silverlight和ICollectionView

5

我有一个数据网格,需要添加自定义排序功能,并且需要知道排序的确切顺序。

我已经阅读了一些资料,得知需要实现自定义ICollecionView并将其绑定到数据网格上。

但问题是微软提供的这个接口的文档不是那么好。是否有人知道如何做到这一点,或者有任何关于如何在Silverlight中实现此接口的好教程?

5个回答

5

我正在寻找同样的内容,并在Colin Eberhardt的文章中找到了答案。它展示了如何使用ICollectionView实现排序。

如果您发现如何实现过滤,请告诉我。


我成功地让文章中的代码运行起来,对我的网格进行了排序。 - Xander
链接已失效。 - Pyritie
1
..而Silverlight也是如此。同意从文章中复制代码会更好。祝你解决问题好运。 - Larsi

2

Silverlight 3现在支持实现ICollectionView,称为PagedCollectionView

这提供了排序和分组功能,但不包括过滤。


1
我找到的最好例子是Microsoft为DataGrid创建的ICollectionView实现。不幸的是,他们把它标记为内部的,所以你不能直接使用它(复制和粘贴源代码需要进行一些修改)。打开Reflector并打开System.Windows.Controls.Data.dll - 导航到System.Windows.Controls命名空间,你可以找到ListCollectionView。以下是定义,表明它实现了ICollectionView:
internal class ListCollectionView:ICollectionView,INotifyCollectionChanged,INotifyPropertyChanged,IEnumerable 我真的希望微软能提供这个类 - 几乎每个LOB应用都需要它。

0

以下是使用ICollectionView执行排序的方法。

ICollectionView view = CollectionViewSource.GetDefaultView(someCollection);
view.SortDescriptions.Add(new SortDescription("someProperty", ListSortDirection.Ascending));
view.SortDescriptions.Add(new SortDescription("someOtherProperty", ListSortDirection.Descending));

然而这并不是我所谓的“自定义排序”... 它只是让您选择排序标准和方向。您能否更具体地说明您想要做什么?


我在这里遇到的问题是Silverlight实际上没有CollectionViewSource,所以我必须要自己实现它。 - Xander
好的,我没有意识到 Silverlight 中缺少这个类。奇怪的是 ICollectionView 接口存在,但似乎没有任何实现它的类...即使 ItemCollection 类也不是(在 WPF 中是)。很奇怪... - Thomas Levesque
是的,很奇怪...也很烦人。我真的需要一个这个类的实现。 - James Cadd

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接