您必须覆盖DataGrid.OnSorting就像在这个简单的例子(但是请延长到您全要求),并在您的XAML使用定制控制而不是标准DataGrid
的。
public class MyDataGrid : DataGrid
{
protected override void OnSorting(DataGridSortingEventArgs eventArgs)
{
base.OnSorting(eventArgs);
var test = eventArgs.Column;
if (test.Header.ToString() == "ColumnOne" && test.SortDirection.HasValue
&& test.SortDirection.Value.Equals(ListSortDirection.Ascending)
)
{
ICollectionView view = CollectionViewSource.GetDefaultView(this.ItemsSource);
view.SortDescriptions.Add(new SortDescription("ColumnThree", ListSortDirection.Ascending));
view.Refresh();
this.Columns[2].SortDirection = ListSortDirection.Ascending;
}
}
}
上面代码处理两者总汇排序和只在一个情况下,SortDirection
属性设置为ColumnThree
:当由ColumnOne
升序用户订单。