我有一个ListView(GridView),我想按照两个列排序,所以如果两个或更多的项目在第一列中具有相同的值,则按第二列排序。非常简单。但是当按A-Z排序时,空字符串出现在顶部。我希望将它们移动到底部。我编写了一个比较器(IComparer)来处理这个问题,但我不确定如何使用它。
以下是我尝试过的代码:
问题在于我的比较器得到的是我的类的类型,而不是被排序的属性/列的值。因此,如果这个类是Foo,我正在按Foo.Bar排序,我会得到整个Foo类,而不仅仅是Bar的值(这实际上是它应该关心的,因为这就是它所排序的)。
我的比较器如何知道要比较哪个属性?也许我在这里做错了什么,因为这毫无意义。我希望得到一个String(属性类型)来比较x和y...
有人知道怎么做吗?
以下是我尝试过的代码:
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的值(这实际上是它应该关心的,因为这就是它所排序的)。
我的比较器如何知道要比较哪个属性?也许我在这里做错了什么,因为这毫无意义。我希望得到一个String(属性类型)来比较x和y...
有人知道怎么做吗?