我的问题与post有关,但是由于问题很旧,我创建了一条新帖子。
我开始使用ICollectionView
,因此我将ViewModel制作如下:
public ICollectionView SampleListView { get; set; }
SampleListView = new CollectionViewSource() { Source = SampleList }.View;
问题是当我更改源代码时,我曾经做过以下事情:
List<T> list= GetMyList();
SampleList=new ObservableCollection<T>(list);
(blindmeis接受的答案)解释了有两种方法可以解决该问题:
1)您可以使用.Clear()而不是替换ObservableCollection并添加新Collection中的项目。这还有不破坏您的分组和排序的额外好处。
2)*每次替换ObservableCollection时,都必须创建一个新的ICollectionView进行排序和分组。
this._view = (ICollectionView)CollectionViewSource.GetDefaultView(this.MyCollection);
如果您使用DefaultView,则只需绑定到您的收藏集
<DataGrid Name="grid" ItemsSource="{Binding MyCollection}" />
我的问题是,做到这一点的最佳方法是什么?我的意思是“干净”的解决方案?
对我来说,更快的方法是使用解决方案2(仅因为我有一个包含很多ListViews的大项目,而采用选项1却是一项巨大的工作)。 选择选项1有什么优势?值得吗?(除了保持分组/排序)。