Cześć,

chciałbym pogrupować dane w DataGrid i jednocześnie te grupy móc posortować po naciśnięciu nagłówka kolumny po której grupuję.

Np. mam tabelę z uczniami, których grupuję w zależności od klasy (I, II, III, etc..), ale te grupy są posortowane w kolejności II, I, III.
Teraz próbowałem to posortować po naciśnięciu nagłówka, jednak sortują się dane w obrębie tych grup (czego oczywiście nie widać), tak jakby to były trzy osobne datagridy z jednym zestawem nagłówków kolumn.

Utworzyłem sobie obiekt CollectionViewSource, którego źródło jest bindowane z ObservableCollection z ViewModelu, następnie ustawiam właściwość GroupDescriptions na klasę.

 ICollectionView cvsStudentsList = CollectionViewSource.GetDefaultView(dgStudentsList.ItemsSource);
 if (cvsStudentsList != null && cvsStudentsList.CanGroup)
 {
        cvsStudentsList.GroupDescriptions.Clear();
        cvsStudentsList.GroupDescriptions.Add(new PropertyGroupDescription("Grade"));
 }

Sortowanie próbowałem obsłużyć w funkcji wywoływanej po naciśnięciu headera oraz przez funkcję wywoływaną z parametru Sorting ustawionego bezpośrednio w DataGridzie.
Sposoby, w jakie próbowałem to osiągnąć były różne, ale wszystkie sprowadzały się do tego, że ustawiałem parametr SortDescription dla cvsStudentsList na odpowiednie sorotwanie (ASC/DESC). Próbowałem też to sortowanie przypisać bezpośrednio do kolumny, ale efekt taki jak opisałem na początku.


docSourceHdrSortDir = docSourceHdrSortDir == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
cvsStudentsList.SortDescriptions.Clear();
cvsStudentsList.SortDescriptions.Add(new SortDescription("Grade", docSourceHdrSortDir));

Ktoś może mnie nakierować w jaki sposób to zrobić?
Bo jak rozumiem, w ten sposób sortuje faktyczne pozycje, które są w datagridzie, a żeby to zadziałało, to muszę posortować jakoś te grupy, które się utworzyły po ustawieniu GroupDescriptions, tylko jak to zrobić?

Dodam, że próbowałem przed sortowaniem wyłączać grupowanie i włączać je po posortowaniu, ale to nic nie dało.
Zanim się zorientowałem, że klasy się sortują (w obrębie grup), to próbowałem też grupować po identyfikatorze klasy a sortować po klasie. Efekt ten sam.