如何向特定列添加特殊排序方法以允许不同类型的排序(例如在 120.5.1.12 和 120.5.1.110 之间排序 120.5.1.50,而不是让 120.5.1.110 成为最小值。
另外,我如何允许自定义类型的单击标题排序将其绑定到模板列。这甚至可能吗?
您可以实现 IComparer 并定义自己的比较逻辑。
public class MyComparer : IComparer<Object>
{
public int Compare(Object stringA, Object stringB)
{
// Your logic here
}
}
在您可以将 LINQ OrderBy 方法与您的自定义比较器一起使用之后。
items = items.OrderBy(x => property, comparer).ToList();
请参阅此链接。
编辑 以覆盖 WPF 数据网格的默认排序行为,请参阅此链接中的答案。
如果要在单击列标题后保持自定义排序顺序,可以使用附加行为。我想出了这个似乎运作良好的解决方案:
这是一个 MVVM 解决方案 - 如果您想深入研究代码隐藏的世界,可能有更简单的方法可以做到这一点。