Сетка сортировки DataGrid на ItemsSource изменена - PullRequest
3 голосов
/ 26 августа 2010

Я использую подход MVVM.

У меня есть ViewModel и View, называемые AllSomethingViewModel и AllSomethingView. Модель представления содержит список SomethingViewModel и SelectedViewModel. Представление содержит пользовательский элемент управления, связанный со свойством SelectedVM AllSomethingViewModel, и элемент управления со списком, который позволяет мне выбрать виртуальную машину. В основном, когда я выбираю новую виртуальную машину, DataContext элемента управления пользователя изменяется, и поэтому представление, связанное с SomethingViewModel, обновляется с новой информацией.

SomethingViewModel содержит список объектов, называемых данными ObservableCollection (DataPoints).

У меня есть DataGrid, привязанный к данным, и определенные столбцы, которые привязаны к членам данных. Это отлично работает. Я могу изменить представления и обновления этой сетки данных, и все хорошо.

Проблема, с которой я сталкиваюсь, заключается в том, что мне бы хотелось, чтобы сортировка, применяемая к сетке данных, сохранялась при изменении текста данных.

В представлении, связанном с SomethingViewModel, я могу подписаться на событие DataContextChanged, но я не уверен, что делать, чтобы применить сортировку.

Например. У меня есть 2 SomethingViewModels. Так что в моем списке есть 2 варианта. Когда я выбираю первый, я получаю свою сетку данных со своими данными. В сетке данных я решаю отсортировать по возрастанию DateCreated. Затем я перехожу ко второй виртуальной машине, текст данных изменяется, поэтому данные в сетке обновляются, но больше не сортируются!

1 Ответ

1 голос
/ 07 сентября 2010

Если ваша сортировка выполняется с помощью DataGrid, она сохраняется в ICollectionView, который DataGrid использует для отображения своих данных.

ICollectionView view = CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource);
// Sorting is found in view.SortDescriptions

Вот пример настройки сортировки в коде здесь . Надеюсь, этого достаточно, чтобы вы пошли в правильном направлении

...