我试图在不使用移位键的情况下使用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#会再次对它进行排序,只选择列,并失去多重排序功能。
请帮助
您需要通过将事件标记为e.Handled="True"
来停止事件的路由。
Sorting
是在源元素上引发的冒泡事件,并向上导航到可视化树,直到它到达根元素,或者直到通过将事件标记为已处理而停止冒泡。
这些链接将有助于理解WPF中的RoutedEvents
。
-
http://wpftutorial.net/RoutedEvents.html.
-
http://msdn.microsoft.com/en-us/library/ms742806.aspx