我尝试使用带有以下代码的DataGridSortingEvent
而不使用shift键对多个列进行排序:
private void dataGridPayables_Sorting(object sender, DataGridSortingEventArgs e)
{
if (e.Column.SortDirection == null)
e.Column.SortDirection = ListSortDirection.Descending;
ListSortDirection sort_direction = (ListSortDirection)e.Column.SortDirection;
dataGridPayables.Items.SortDescriptions.Clear();
dataGridPayables.Items.SortDescriptions.Add
(new SortDescription(e.Column.SortMemberPath, sort_direction));
dataGridPayables.Items.SortDescriptions.Add
(new SortDescription("total_amount", sort_direction));
dataGridPayables.Items.SortDescriptions.Add
(new SortDescription("payment_actual", sort_direction));
dataGridPayables.Items.SortDescriptions.Add
(new SortDescription("status", sort_direction));
e.Column.SortDirection = sort_direction;
dataGridPayables.Items.Refresh();
MessageBox.Show("SORT " + e.Column.SortMemberPath + " " + sort_direction.ToString());
}
我发现数据网格是按照上面的代码排序的,但是当它离开方法时,C#会再次对其进行排序,只选择所选的列并丢失多重排序功能。
请帮忙
答案 0 :(得分:0)
您需要通过标记e.Handled="True"
来停止事件路由。
Sorting
是一个冒泡事件,它在源元素上引发并导航到可视树,直到它到达根元素或者直到通过将事件标记为已处理来停止冒泡。
这些链接有助于了解WPF中的RoutedEvents
。