我最近偶然发现了WPF的问题 ListView 控制似乎限制了对项目进行分类的能力。具体来说,我遇到了很多麻烦 SortDescription 识别嵌套属性(属性的属性)。

对于通过Propenties进行直接分类,以下行应该完成工作:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
    ListSortDirection.Ascending));

确实,它对我效果很好。但是,因为 ItemSource 为我 ListView 是(强烈的) DataTable, ,某些列属于行的嵌套属性(即 Row.OtherTableRow.SubProperty 绑定路径样式) - 这是ADO.NET数据集适用于层次数据库的方式。

我想做的就是这样的事情:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
    ListSortDirection.Ascending));

但不幸的是,这条线给 ArgumentException:

“订单”类型没有名为“行”的属性。[id]',因此不能对数据集合进行排序。

奇怪的是,我没有问题与嵌套特性结合。确实,这些田地在 ListView...也没有添加 PropertyGroupDescriptionlistView.GroupDescriptions 给我嵌套属性的任何问题 - 仅 SortDescriptions!

这是WPF/ ListView 控制?作为框架的一部分,我有什么办法获得支持,还是我会失去运气?如果我不幸的是,这种不一致是不可避免的,那么如果有人可以在这种嵌套属性的情况下提出黑客入侵或解决方法,我将非常感谢。我已经尝试了一些想法,但是所有这些都取得了最小的成功。

注意:我意识到一个ORM可能会解决我的问题,但是恐怕这对于我正在从事的当前项目来说根本不可行。简单的ADO.NET数据集必须执行。

有帮助吗?

解决方案

根据Windows演示基金会的Unaled(Adam Nathan),您可以将默认视图投放到ListCollectionView,并将自定义ICOMPARER实现设置为其CustomSort属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top