我有一个WPF项目 - 一个包含四列的数据网格:ColumnOne,ColumnTwo,columnThree,ColumnFour。当用户按ColumnOne或ColumnTwo排序时,后面的代码也可能通过ColumnThree添加排序,因此它会像SortBy(“ColumnOne”)一样排序。然后是(“ColumnThree”)。如果这很重要,我的DataGrid的ItemsSource是PagedCollectionView,它支持SortDescriptors。
答案 0 :(得分:1)
您必须在此简单示例中覆盖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
升序时。