【发布时间】:2011-12-15 10:51:08
【问题描述】:
我有一个带有绑定项目源的数据网格。我已将 datagrid 的 CanUserSortColumns 属性设置为 TRUE,对 datagrid 中的所有内部列也是如此,但用户仍然无法对列进行排序。
有什么我错过了吗?
【问题讨论】:
-
向我们展示您的 xaml 绑定和数据源类型
我有一个带有绑定项目源的数据网格。我已将 datagrid 的 CanUserSortColumns 属性设置为 TRUE,对 datagrid 中的所有内部列也是如此,但用户仍然无法对列进行排序。
有什么我错过了吗?
【问题讨论】:
您是否为您的标头明确定义DataTemplate?如果是的话,您必须将列 "SortMemberPath" 上的属性设置为您想要对列进行排序的 CLR 属性。此链接可能对您有所帮助,请查看 -
【讨论】:
谢谢各位。那行得通。我只想补充。
这些列的类型必须实现非泛型IComparable,如果您使用原始类型或.net 类型,这通常不是问题。但是,如果您有自己的类型,则必须添加它。
例如
/* 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); }
}
【讨论】: