我正在使用MVVM方法。
我有一个名为AllSomethingViewModel和AllSomethingView的ViewModel和View。视图模型包含SomethingViewModel和SelectedViewModel的列表。 View包含一个绑定到AllSomethingViewModel的SelectedVM属性的usercontol和一个允许我选择VM的列表框控件。基本上,当我选择一个新的VM时,usercontrol的DataContext会发生变化,因此与SomethingViewModel关联的视图会更新新信息。
SomethingViewModel包含一个名为ObservableCollection(DataPoints)数据的对象列表。
我有一个DataGrid绑定到定义的数据和列绑定到数据的成员。这很好用。我可以更改视图和这个数据网格更新,一切都很好。
我遇到的问题是,当datacontext更改时,我希望应用于datagrid的任何排序都会持久存在。
在与SomethingViewModel相关联的View上,我可以订阅DataContextChanged事件,但我不确定从那里做什么来获取要应用的排序。
例如。我有2个SomethingViewModels。所以在我的列表中有2个选项。当我选择第一个时,我使用我的数据获取数据网格。在datagrid中,我决定按DateCreated Ascending顺序排序。然后我转到我的第二个VM,datacontext发生了变化,因此网格中的数据会更新,但不再排序!
答案 0 :(得分:1)
如果您的排序由DataGrid完成,那么它将存储在DataGrid用于显示其数据的ICollectionView中。
ICollectionView view = CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource);
// Sorting is found in view.SortDescriptions
有一个在代码here中设置排序的示例。希望这足以让你朝着正确的方向前进