【问题标题】:WPF CollectionViewSource sorting issues with null values带有空值的 WPF CollectionViewSource 排序问题
【发布时间】:2012-05-17 16:16:02
【问题描述】:

我有一个collectionviewsource,它的来源是一个可观察的集合,我正在排序;

_viewSource.SortDescriptions.Add(new SortDescription() { PropertyName ="PropertyName", Direction = ListSortDirection.Ascending });

这一切都很好,直到我尝试按列表中具有空值的属性进行排序。然后我得到一个 InvalidOperationException,“无法比较数组中的两个元素”

我是否必须实现自己的 IComparer 类才能解决 null 问题,还是我错过了一个技巧?

提前谢谢..

【问题讨论】:

    标签: c# wpf sorting collectionviewsource


    【解决方案1】:

    是的,要处理空值,您必须写下自己的 custom sorter 实现 IComparer。可以参考这个以防万一-IComparer sample


    private class sortYearAscendingHelper : IComparer
    {
       int IComparer.Compare(object a, object b)
       {
          car c1=(car)a;
          car c2=(car)b;
          if(c1.year == null && c2.year == null)
             return 0;
          if(c1.year == null && c2.year != null)
             return -1;
          if(c1.year != null && c2.year == null)
             return 1;
          if (c1.year > c2.year)
             return 1;
          if (c1.year < c2.year)
             return -1;
          else
             return 0;
       }
    }
    

    【讨论】:

    • Bea Stollnitz 的死链接(真是个损失!!!),您能发布一个示例或工作链接吗?
    • @Hannish - 谢谢。我已经更新了链接。还要发布一个示例以避免将来出现过时的链接问题。希望有帮助。!!
    • 谢谢你,你太客气了。顺便问一下,你知道 Bea 的博客是怎么回事吗?它消失了真是太棒了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2012-10-06
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多