我有一个包含两列的WPF Datagrid,我只想根据选择的列进行升序排序。如果列"名称"如果选择,则排序在"名称"上升序,或者,如果列"描述"而是选择,排序在描述上升序。 它们都不能以降序排序(如果第二次选择该列,则不应将列从升序排序切换为降序排序)。
<DataGrid Name="Person" ItemsSource="{Binding PersonList}" SelectedItem="{Binding Path=SelectedPerson, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTemplateColumn SortDirection="{Binding SortOrder, Mode=TwoWay}" Header="Name" SortMemberPath="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- Some template info for displaying Name... -->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn SortDirection="{Binding SortOrder, Mode=TwoWay}" Header="Description" SortMemberPath="Description">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- Some template info for displaying Description... -->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid Name="Person">
答案 0 :(得分:1)
处理Sorting
的{{1}}事件:
DataGrid
private void Person_Sorting(object sender, DataGridSortingEventArgs e)
{
e.Column.SortDirection = System.ComponentModel.ListSortDirection.Ascending;
}
答案 1 :(得分:0)
我最终选择的解决方案是对不同答案的修改
private void Person_Sorting(object sender, DataGridSortingEventArgs e)
{
if (e.Column.SortDirection == ListSortDirection.Ascending)
{
e.Handled = true;
return;
}
}