强制对 DataGrid 进行二次排序
Forcing a secondary sort on a DataGrid
是否有以编程方式应用 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
公开完整模型的替代方案?
您查看过 SortMemberPath 了吗?
<DataGrid.Columns>
<DataGridTextColumn Header="Some Caption" Width="200"
CanUserSort="True"
Binding="{Binding SomeDataField}"
SortMemberPath="OtherNonShowingField"/>
</DataGrid.Columns>
因此,如果您要列出列表中的数据
或者通过 DataColumn 引用从 DataTable 中,您始终可以添加另一个字段或列,该字段或列在该字段中具有组合的 A + B 部分。所以即使不显示该列,也可以作为排序的依据。
是否有以编程方式应用 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
公开完整模型的替代方案?
您查看过 SortMemberPath 了吗?
<DataGrid.Columns>
<DataGridTextColumn Header="Some Caption" Width="200"
CanUserSort="True"
Binding="{Binding SomeDataField}"
SortMemberPath="OtherNonShowingField"/>
</DataGrid.Columns>
因此,如果您要列出列表中的数据 或者通过 DataColumn 引用从 DataTable 中,您始终可以添加另一个字段或列,该字段或列在该字段中具有组合的 A + B 部分。所以即使不显示该列,也可以作为排序的依据。