2016-08-04 7 views
0

У меня есть проект WPF - datagrid с четырьмя столбцами: ColumnOne, ColumnTwo, columnThree, ColumnFour. Возможно ли, что когда пользователь сортирует ColumnOne или ColumnTwo, а затем код позади добавляет сортировку по ColumnThree, поэтому он сортируется как SortBy («ColumnOne»). ThenBy («ColumnThree»). Если это имеет значение, ItemsSource для моего DataGrid является PagedCollectionView, который поддерживает SortDescriptors.DataGrid добавить еще один столбец

ответ

1

Вы должны переопределить DataGrid.OnSorting как в этом простом примере (но, пожалуйста, расширить его свои полных требований) и использовать контроль пользовательских вместо стандартного DataGrid в вашем XAML.

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 возрастанию.

Смежные вопросы