当我读到ObservableCollection
时,我开始知道它实现了INotifyPropertyChanged
,这意味着每当视图发生变化时,它的底层集合也会自动更新,这正是TwoWay数据绑定的目的。那么,ObservableCollection和TwoWay数据绑定有什么区别?
提前致谢:)
答案 0 :(得分:3)
两个“事物”TwoWay数据绑定和ObservableCollection是可以协作但不直接链接的不同事物。数据绑定是一个概念,ObservableCollection是一个接口(INotifyCollectionChanged)的实现,它用于实现.NET框架中的数据绑定概念。 INotifyCollectionChanged本身就是这个实现的一小部分。
实际上,您可以在没有ObservableCollections和ObservableCollections的情况下使用TwoWay数据绑定而无需数据绑定。
数据绑定是一种机制,允许您将业务对象属性(通常是ViewModel属性)绑定到UI属性。 OneWay数据绑定在对象更改时提供对UI更新的支持(这需要在业务对象上实现INotifyPropertyChanged和/或INotifyCollectionChanged)。 TwoWay数据绑定提供了双向支持,因为它的名字表明它:Object =>用户界面(如OneWay)和UI =>宾语。 UI到对象更新不需要实现INotifyCollectionChanged也不需要实现INotifyPropertyChanged。
Observable collection现在很有意思,因为它实现了INotifyCollectionChanged,这使它成为创建数据表可收集集合的一个很好的候选者。但我经常使用INotifyCollectionChanged没有数据绑定,我很确定你可以找到其他实现INotifyCollectionChanged的集合(如PagedCollectionView)
它能回答你的问题吗?
答案 1 :(得分:2)
如果您绑定到您的集合,如{Binding Path = MyCollection,Mode = TwoWay},那么对集合的引用将会更新,但不会更新其内容。 Observable collection允许跟踪其内容更改,但不会引用更改(MyCollection.Clear()
将触发UI更新,但MyCollection = anotherInstance
不会)。
答案 2 :(得分:1)
问题有点像“马和车之间有什么区别?”
ObservableCollection可用于TwoWay数据绑定(到ItemsControl) 它或多或少的设计使数据绑定变得容易。
每当Control更新ObservableCollection或其他方式时,中间都有一个DataBinding。
答案 3 :(得分:1)
对象需要实现INotifyPropertyChanged
,因此您可以绑定到此对象的属性。
TwoWayDatabinding
告诉数据绑定引擎它需要以两种方式更新属性。
您正在比较苹果和飞机。这是两个完全不同的东西。
此外,ObservableCollection还实现了INotifyCollectionChanged
,它允许通知其项目已更改,而不仅仅是属性。