2010-11-10 75 views
0

这是正常的吗?我是否必须调用强制更新的方法?当绑定List <T>集合被修改时,WPF ListView没有更新?

基本上我正在添加新项目,可以看到列表在内存中增长,但UI仍显示启动时定义的初始元素。

+1

这回答你的问题,因为它做我的:http://stackoverflow.com/questions/3726665/why-does-an-ienumerablet-require-a-call-to-tolist-to-update-the-listview/3726843#3726843 – 2010-11-10 21:53:31

+0

谢谢你,这是一个很长的问题,答案,但似乎它有很好的信息。 – 2010-11-10 21:56:48

回答

2

如果您使用的是List<T>,请尝试使用ObservableCollection<T>。 ObservableCollection具有WPF将绑定到的事件,以了解集合何时更改。一个常规列表没有这个,所以WPF不知道什么时候添加或删除了。

+0

谢谢CG,另一个问题:我也可以修改ObservableCollection中的项目吗?所以就像:collection [0] .Name =“Cool”? – 2010-11-10 21:57:45

+0

仅当您的对象实现INotifyPropertyChanged时,它才会执行相同的基本操作。它提供了一个WPF可以绑定的事件,以便在实例上的属性发生更改时可以通知它。 – CodingGorilla 2010-11-10 22:00:17

+0

谢谢,这是有道理的。最后为什么叫ObservableCollection? ObservableCollection听起来像它的意思是只读,不会被修改,就像在观察。 – 2010-11-10 22:05:14