J'utilise une approche MVVM.DataGrid Rétention de tri sur ItemsSource modifié
J'ai un ViewModel et View appelé AllSomethingViewModel et AllSomethingView. Le modèle View contient une liste de SomethingViewModels et un SelectedViewModel. La vue contient un usercontol lié à la propriété SelectedVM de AllSomethingViewModel et un contrôle listbox qui me permet de sélectionner une VM. Fondamentalement, lorsque je choisis une nouvelle VM, le DataContext d'usercontrol change et donc la vue associée à SomethingViewModel est mise à jour avec de nouvelles informations. SomethingViewModel contient une liste d'objets appelés données ObservableCollection (DataPoints).
J'ai un DataGrid lié à des données et des colonnes définies qui sont liées aux membres de données. Cela fonctionne bien. Je peux changer les vues et les mises à jour de DataGrid et tout est sympa.
Le problème que je rencontre est que je voudrais que tout tri appliqué à la grille de données persiste lorsque le datacontext change. Sur la vue associée à SomethingViewModel, je peux m'abonner à l'événement DataContextChanged mais je ne sais pas quoi faire à partir de là pour obtenir le tri à appliquer.
Par exemple. J'ai 2 SomethingViewModels. Donc dans ma liste il y a 2 options. Quand je choisis le premier, j'obtiens mon DataGrid avec mes données. Dans la grille de données, je décide de trier par ordre croissant DateCreated. Ensuite, je passe à ma deuxième VM, le datacontext change donc les données de la grille sont mises à jour mais elles ne sont plus triées!