使用自定义IComparer对CollectionViewSource进行排序

时间:2009-06-12 19:25:52

标签: c# wpf

我正在尝试对从CollectionViewSource派生的集合进行排序,该集合只有SortDescriptions用于排序。不幸的是我需要能够使用我自己的自定义IComparer,但我似乎找不到办法做到这一点。想想数据网格,我有自己的多列排序算法。我想一种方法是使用一个实现CollectionChanged的集合,它是CollectionViewSource和我的真实数据源之间的附加层,但如果有人有任何建议,我真的更喜欢更好的方法。

1 个答案:

答案 0 :(得分:15)

Bea Stollnitz有一个自定义排序示例here

该文章的关键点是将CollectionViewSource绑定到IList实现,而不是弱ICollectionIEnumerable接口。这样,View属性返回ListCollectionView实例而不是CollectionView。然后,您可以使用ListCollectionView.CustomSort指定IComparer进行自定义排序。为了简化操作,您还可以使用Comparer<T>.Create方法来使用Comparison代理而不是整个类。