Решение должно быть очень простым и просто пропустить его.Сортировка ObservableCollection для DataGrid корректно работает для первого запуска
У меня есть DataGrid, связанный с ObservableCollection. Этот ObservableCollection должен быть групповым и отсортированным. Я делаю это так:
ListCollectionView collection = new ListCollectionView(myCollection);
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group1"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group2"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group3"));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group1", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group2", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group3", System.ComponentModel.ListSortDirection.Ascending));
myDataGrid.ItemsSource = collection;
Однако, если он заново работает, он работает. Так что только в первый раз. Я могу обойти это, сделав это;
ListCollectionView collection = new ListCollectionView(myCollection);
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group1"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group2"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group3"));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group1", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group2", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group3", System.ComponentModel.ListSortDirection.Ascending));
myDataGrid.ItemsSource = collection;
collection = new ListCollectionView(myCollection);
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group1"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group2"));
collection.GroupDescriptions.Add(new PropertyGroupDescription("Group3"));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group1", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group2", System.ComponentModel.ListSortDirection.Ascending));
collection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Group3", System.ComponentModel.ListSortDirection.Ascending));
myDataGrid.ItemsSource = collection;
Это просто кажется глупым.