代码之家  ›  专栏  ›  技术社区  ›  Noldorin

wpf listview-按嵌套属性排序

  •  2
  • Noldorin  · 技术社区  · 16 年前

    我最近偶然发现了一个问题 ListView 控件似乎限制了对其项进行排序的能力。具体来说,我在尝试 SortDescription 识别嵌套属性(属性的属性)。

    对于按比例进行的直接正向排序,应执行以下行操作:

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

    事实上,它对我很有效。但是,因为 ItemSource 为了我 列表视图 是(强类型) DataTable ,一些列绑定到行的嵌套属性(即 Row.OtherTableRow.SubProperty 绑定路径样式)-这是ADO.NET数据集用于层次数据库的方式。

    我想做的是这样的事情:

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

    但不幸的是,那条线 ArgumentException :

    “orders”类型没有名为“row.[id]”的属性,因此无法对数据集合排序。

    奇怪的是,绑定到嵌套属性没有问题。实际上,字段在 列表视图 …也不添加 PropertyGroupDescription listView.GroupDescriptions 给我嵌套属性的任何问题-它只是 SortDescriptions !

    这只是WPF/ 列表视图 控制?作为框架的一部分,我有没有办法获得支持,或者我在那里会走运?如果不幸的是,这种不一致是不可避免的,那么如果有人能为这种嵌套属性的场景建议一种黑客攻击或变通方法,我会非常感激。我已经尝试了一些想法,但都没有成功。

    注意:我知道ORM可以很好地解决我的问题,但我担心这对于我正在进行的当前项目来说根本不可行。简单的ADO.NET数据集必须这样做。

    1 回复  |  直到 16 年前
        1
  •  1
  •   ArildF    16 年前

    根据Windows演示基础un出租(Adam Nathan),您可以将默认视图转换为ListCopyVIEW视图,并将自定义ICMPARER实现设置为Cuto排序属性。