datagrid中的CanUserSortColumns没有生效?

时间:2011-10-26 03:22:34

标签: wpf sorting datagrid

我有一个带有绑定项源的数据网格。我已将datagrid的CanUserSortColumns属性设置为TRUE,而datagrid中的所有内部列也是如此,但用户仍然无法对列进行排序。

我有什么遗漏的吗?

2 个答案:

答案 0 :(得分:3)

您是否明确为标头定义了DataTemplate?如果是,则必须将列"SortMemberPath"上的属性设置为要对列进行排序的CLR属性。这个链接可能对您有所帮助,看看它 -

WPF4 Datagrid doesn't sort on column headers

答案 1 :(得分:1)

谢谢你们。那很有效。我只想补充一下。

这些列的类型必须实现非泛型IComparable,如果您使用的是原始或.net类型,这通常不是问题。但是如果你有自己的类型,那么你将不得不添加它。

E.g。

/* this is my own type */
public struct Distance : ..., IComparable, IComparable<Distance>, ... {

    ...

    public int CompareTo(object obj)
    {
        if (obj == null) { return 1; }

        if (obj.GetType() != typeof(Distance)) { return 0; }

        return CompareTo((Distance)obj);
    }

    public int CompareTo(Distance other) { return _meters.CompareTo(other._meters); }
}