强制对DataGrid进行二级排序

时间:2018-10-08 09:31:16

标签: c# wpf wpfdatagrid

是否存在以编程方式基于多个属性应用WPF DataGrid排序的方法?

我有一个多列DataGrid,其中包含一列,我一直希望在对其他列进行排序时在值的分组中按字母顺序排列。

我见过的所有自定义排序实现都使用IComparer,但这仅在与之关联的单列中提供值。

例如,如果我们有以下两列未排序的数据:

  • A 1
  • D 2
  • C 2
  • B 1

如果我们对第二列进行排序,则第一列将在每个分组中被任意排序:

  • A 1
  • B 1
  • D 2
  • C 2

我要寻找的是第二列中任何具有相同值的组,第一列按字母顺序排列:

  • A 1
  • B 1
  • C 2
  • D 2

IComparer是否有替代方法可以公开完整模型?

1 个答案:

答案 0 :(得分:1)

您是否研究过SortMemberPath?

<DataGrid.Columns>
    <DataGridTextColumn Header="Some Caption"  Width="200"
        CanUserSort="True"
        Binding="{Binding SomeDataField}" 
        SortMemberPath="OtherNonShowingField"/>
</DataGrid.Columns>

因此,如果您要列出列表中的数据 或通过DataTable通过其DataColumn引用从DataTable中,您总是可以添加在该字段中具有合并的A + B部分的另一个字段或列。因此,即使您不显示该列,它也可以用作排序的基础。