我最近偶然发现WPF ListView
控件似乎限制了对其项目进行排序的能力。具体来说,我在尝试使SortDescription
识别嵌套属性(属性属性)时遇到了很大的麻烦。WPF ListView - 按嵌套属性排序
对于由propreties直接的排序,下面一行应该做的工作:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
ListSortDirection.Ascending));
事实上它很适合我。但是,因为我的ListView
的ItemSource
是(强类型)DataTable
,所以某些列绑定到该行的嵌套属性(即Row.OtherTableRow.SubProperty
绑定路径样式) - 这是ADO.NET DataSet适用于分层数据库的方式。
我想什么做的是这样的:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
ListSortDirection.Ascending));
但遗憾的是该行抛出ArgumentException
:
“订单”式没有名为“Row属性[ID ]',所以不能对数据收集进行排序。
奇怪的是,我没有任何问题绑定到嵌套属性。实际上,这些字段在ListView
中显示得非常好......也不会将PropertyGroupDescription
添加到listView.GroupDescriptions
中给我带来嵌套属性的任何问题 - 它只是SortDescriptions
!
这是WPF/ListView
控件的限制吗?作为框架的一部分,我有没有办法获得支持,还是我会在那里运气不好?如果我不幸的是,而且这种不一致是不可避免的,我会非常感谢,如果有人可以提出一个黑客或解决方案嵌套属性的这种情况。我已经尝试了一些想法,但都取得了最小的成功。
注:我意识到一个ORM可能很好地解决了我的问题,但恐怕这对于我正在开发的当前项目来说根本不可行。简单的ADO.NET DataSets将不得不做。
干杯。如果它能很好地涵盖其他高级场景,我可以看看那本书。 :) – Noldorin 2009-07-23 21:48:49