【问题标题】:Sorting CollectionViewSource using custom IComparer使用自定义 IComparer 对 CollectionViewSource 进行排序
【发布时间】:2010-11-02 13:55:05
【问题描述】:

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

    那篇文章的重点是将CollectionViewSource 绑定到IList 实现而不是较弱的ICollectionIEnumerable 接口。这样,View 属性返回一个ListCollectionView 实例而不是CollectionView。然后,您可以使用ListCollectionView.CustomSort 分配IComparer 来进行自定义排序。为方便起见,您还可以使用 Comparer<T>.Create 方法来使用 Comparison 委托而不是整个类。

    【讨论】:

    • 补充一点:CustomSortSortDescriptions的使用是互斥的,不能同时使用。设置一个会自动清除另一个。所以对于多列排序,这也需要自定义比较器来处理!
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2021-09-28
    • 2020-07-31
    • 2020-03-24
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多