【发布时间】:2011-08-01 02:16:48
【问题描述】:
我有一个 ListView (GridView),我想按 2 列排序,所以如果 2+ 项在第 1 列中具有相同的值,它会按第 2 列排序。很容易。但是在对 A-Z 进行排序时,空字符串会显示在顶部。我想把它们移到底部。我做了一个比较器(IComparer)来处理这个问题,但我不知道如何使用它。
这是我尝试过的代码:
Dim view As ListCollectionView = CollectionViewSource.GetDefaultView(myCollection)
Using view.DeferRefresh
view.SortDescriptions.Clear()
view.SortDescriptions.Add(New SortDescription(sortHeader.Header, direction))
view.SortDescriptions.Add(New SortDescription(otherColumn, direction))
view.CustomSort = New MyComparer()
End Using
问题是我的比较器被赋予了我的类的类型,而不是被排序的属性/列的值。因此,如果该类是 Foo 并且我按 Foo.Bar 排序,我会得到整个 Foo 类,而不仅仅是 Bar 的值(这实际上是它应该关注的全部,因为它是排序依据)。
我的比较器如何知道要比较哪个属性?也许我在这里做错了什么,因为这没有任何意义。我希望得到 x 和 y 的字符串(属性类型)...
有人知道怎么做吗?
【问题讨论】:
标签: c# wpf vb.net sorting listview