ObservableCollection包含列表的对象

时间:2011-06-21 07:08:36

标签: c# wpf data-binding observablecollection

我使用ObservableCollection作为DataGrid的ItemsSource进行数据绑定。集合包含复杂类型对象。其中一个类型属性是字符串列表。

目前我看到当我从代码更新此List属性时,UI中没有任何更改(主绑定工作正常)。所以,我的问题是:这是一种预期的行为吗?也许我不应该使用List作为类型的一部分,但也使用ObservableCollection?

更新

模式设置为OneWay。

4 个答案:

答案 0 :(得分:2)

使用实现接口INotifyCollectionChanged的集合而不是List(如ObservableCollection)。然后对集合的更改将填充到ui。

答案 1 :(得分:0)

当您更新列表时,您必须调用INotifyPropertyChange其他明智的UI不会更新列表结果..

INotifyPropertyChange表示项目源中发生了一些更改,因此请更新它。

答案 2 :(得分:0)

答案 3 :(得分:0)

是的,这是预期的行为。可观察集合仅通知其自身内容的更改 - 即添加,删除,重新排序。

您所看到的是对observablecollection中元素的更改 - 如果您想要查看对所放入类的更改,则元素必须实现INotifyPropertyChanged。

目前:如果复杂对象上的list属性发生了变化,你将无法看到它,但是如果你将其更改为observablecollection,你可以在子项控件中看到对该集合的更改,如组合框 - 但不是如果你将集合对象更改为另一个 - 所以如果你没有实现INotifyPropertyChanged,你应该在应用绑定之前设置collectionproperty。