【问题标题】:How to sort WPF GridView alphabetically with empty strings at end?如何以最后的空字符串按字母顺序对WPF GridView进行排序?
【发布时间】:2011-04-06 01:45:46
【问题描述】:

我有一个包含多列的 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

【问题讨论】:

    标签: wpf sorting listview gridview icomparer


    【解决方案1】:

    看看这个。您可以连接 IComparer 类型的自定义分类器,就像您尝试做的那样: http://ligao101.wordpress.com/2007/07/31/a-much-faster-sorting-for-listview-in-wpf/

    【讨论】:

    • 我尝试像文章所说的那样在 ListCollectionView 上使用 CustomSort,但没有奏效。我的 ListView 有多个列,每个列都绑定到类中的一个属性。我正在使用 SortDescriptions 按单列排序,因此我希望将字符串(属性类型)传递给比较器。相反,它似乎正在传递我的类的一种类型。为什么???文章还说要使用.ItemsSource,但这对我来说是Nothing/null,因为我正在设置DataContext。这会影响它吗?
    • 好吧,我可以让它工作的唯一方法是将我的比较器的参数设置为我正在排序的列的属性名称,并使用反射来获取属性的值,但是这打破了多列排序,所以我提出了一个更具体的新问题。 stackoverflow.com/q/5588353/403736
    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2015-10-30
    • 2017-10-04
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多