强制对 DataGrid 进行二次排序

Forcing a secondary sort on a DataGrid

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

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

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

比如我们有下面两列未排序的数据:

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

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

是否有 IComparer 公开完整模型的替代方案?

您查看过 SortMemberPath 了吗?

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

因此,如果您要列出列表中的数据 或者通过 DataColumn 引用从 DataTable 中,您始终可以添加另一个字段或列,该字段或列在该字段中具有组合的 A + B 部分。所以即使不显示该列,也可以作为排序的依据。