如何按字母顺序对WPF GridView进行排序,结尾为空字符串?

如何按字母顺序对WPF GridView进行排序,结尾为空字符串?,wpf,sorting,listview,gridview,icomparer,Wpf,Sorting,Listview,Gridview,Icomparer,我有一个包含多个列的ListView(GridView),到目前为止,我可以按字母顺序对它进行排序,但是当我对a-Z进行排序时,空字符串显示在顶部。我想把这些移到最后。我想我已经成功地制作了一个IComparer,它会在最后放上空字符串,但我不知道如何让我的ListView使用它。顺便说一下,这是我做的比较器: Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Co

我有一个包含多个列的ListView(GridView),到目前为止,我可以按字母顺序对它进行排序,但是当我对a-Z进行排序时,空字符串显示在顶部。我想把这些移到最后。我想我已经成功地制作了一个IComparer,它会在最后放上空字符串,但我不知道如何让我的ListView使用它。顺便说一下,这是我做的比较器:

Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
    If TypeOf x Is String And TypeOf y Is String Then
        If x = "" And y = "" Then
            Return 0
        ElseIf x = "" And y <> "" Then
            Return 1
        ElseIf x <> "" And y = "" Then
            Return -1
        End If
    End If
    Return x.CompareTo(y)
End Function
Public Function Compare(ByVal x作为对象,ByVal y作为对象)As Integer实现System.Collections.IComparer.Compare
如果x的类型是字符串,y的类型是字符串,那么
如果x=”和y=”,则
返回0
ElseIf x=”“和y”“,然后
返回1
ElseIf x“”和y=”“然后
返回-1
如果结束
如果结束
返回x.CompareTo(y)
端函数

看看这个。您可以连接IComparer类型的自定义分拣机,就像您正在尝试的那样:

我尝试在ListCollectionView上使用CustomSort,如文章所述,但没有成功。我的ListView有多个列,每个列都绑定到类中的一个属性。我使用SortDescriptions按单个列进行排序,因此我希望将字符串(属性类型)传递给比较器。相反,它似乎通过了我的一门课。为什么?文章还说要使用.ItemsSource,但这对我来说是Nothing/null,因为我正在设置DataContext。这会影响它吗?我唯一能让它工作的方法是将我的比较器的参数设置为我正在排序的列的属性名称,并使用反射来获取属性的值,但这打破了多列排序,所以我提出了一个新的问题,更具体一点。