2016-08-04 13 views
0

私はWPFプロジェクトを持っています - 4つの列を持つDataGrid:ColumnOne、ColumnTwo、columnThree、ColumnFour。ユーザーがColumnOneまたはColumnTwoで並べ替えると、コードビハインドでもColumnThreeによる並べ替えが追加されるので、SortBy( "ColumnOne")、ThenBy( "ColumnThree")のようにソートされます。それが問題ならば、私のDataGridのItemsSourceはSortDescriptorsをサポートするPagedCollectionViewです。DataGridは別の列の並べ替えを追加します

答えて

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; 
      } 
     } 
    } 

上記のコードは、ソートcolletionだけある場合にColumnThreeためSortDirectionプロパティ設定の両方を処理する:ときColumnOne上昇によるユーザの注文。

関連する問題