DataGrid在Sorting事件之后再次排序

本文关键字:排序 之后 事件 Sorting DataGrid | 更新日期: 2023-09-27 18:25:13

我试图在不使用移位键的情况下使用DataGridSortingEvent对多列进行排序,其中包含以下代码:

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#会再次对它进行排序,只选择列,并失去多重排序功能。

请帮助

DataGrid在Sorting事件之后再次排序

您需要通过将事件标记为e.Handled="True"来停止事件的路由。

Sorting是在源元素上引发的冒泡事件,并向上导航到可视化树,直到它到达根元素,或者直到通过将事件标记为已处理而停止冒泡。

这些链接将有助于理解WPF中的RoutedEvents

  1. http://wpftutorial.net/RoutedEvents.html.

  2. http://msdn.microsoft.com/en-us/library/ms742806.aspx