我正在尝试对从CollectionViewSource派生的集合进行排序,该集合只有SortDescriptions用于排序。不幸的是我需要能够使用我自己的自定义IComparer,但我似乎找不到办法做到这一点。想想数据网格,我有自己的多列排序算法。我想一种方法是使用一个实现CollectionChanged的集合,它是CollectionViewSource和我的真实数据源之间的附加层,但如果有人有任何建议,我真的更喜欢更好的方法。
答案 0 :(得分:15)
Bea Stollnitz有一个自定义排序示例here。
该文章的关键点是将CollectionViewSource
绑定到IList
实现,而不是弱ICollection
或IEnumerable
接口。这样,View
属性返回ListCollectionView
实例而不是CollectionView
。然后,您可以使用ListCollectionView.CustomSort
指定IComparer
进行自定义排序。为了简化操作,您还可以使用Comparer<T>.Create
方法来使用Comparison
代理而不是整个类。