List<> 集合不会更新 MVVM 中的视图

Dav*_*ham 3 wpf mvvm

我将List<Person> collection用作 DataGrid 控件的 ItemsSource。

但是,如果我从 List 集合中删除该项目,它不会更新视图。我为解决方案苦苦挣扎了很长时间。

然后而不是List<Person>我的 ViewModel中的集合。我把它改成了ObservableCollection<Person> collection. 现在,只要集合发生变化,它就会更新视图。

我不确定为什么它只更新ObservableCollection<Person>? 任何人 ?

dow*_*for 5

那么它的名字。一个简单的 List 不会告诉 ui 更新,换句话说“视图无法观察列表”。数据绑定背后没有奇怪的魔法。WPF 和 DataBinding 需要数据模型来告诉他们“这是新的”或“这是更改的”,您可能已经看到INotifyPropertyChangedINotifyCollectionChanged是相同的,但对于集合,并且List<>没有实现它,ObservableCollection确实如此。