我最近偶然发现了 WPFListView
控件似乎限制了对其项目进行排序的能力的问题。具体来说,我在尝试SortDescription
识别嵌套属性(属性的属性)时遇到了很多麻烦。
对于按属性直接排序,以下行应该可以完成工作:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
ListSortDirection.Ascending));
确实它对我很有效。但是,因为ItemSource
for myListView
是 (strongly-typed) DataTable
,所以某些列绑定到行的嵌套属性(即Row.OtherTableRow.SubProperty
绑定路径样式) - 这是 ADO.NET 数据集用于分层数据库的方式。
我想做的是这样的:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
ListSortDirection.Ascending));
但不幸的是,该行抛出一个ArgumentException
:
“订单”类型没有名为“行。[ID]”的属性,因此无法对数据集合进行排序。
奇怪的是,绑定到嵌套属性没有问题。实际上,这些字段在...中显示得非常好ListView
......添加 a 也不会给我任何嵌套属性的问题 - 它只是!PropertyGroupDescription
listView.GroupDescriptions
SortDescriptions
这只是 WPF/ListView
控件的限制吗?作为框架的一部分,我有什么方法可以获得支持,还是我会不走运?如果不幸的是,并且这种不一致是不可避免的,那么如果有人可以针对这种嵌套属性的场景提出破解或解决方法,我将不胜感激。我已经尝试了一些想法,但都收效甚微。
注意:我意识到 ORM 可以很好地解决我的问题,但恐怕这对于我正在从事的当前项目来说根本不可行。必须使用简单的 ADO.NET 数据集。