我使用MVVM作为表示模型并允许用户与之交互的WPF客户端。我一直回避在实际模型中使用ObservableCollection类(在该模型中选择IList等通用集合,然后在底层集合发生更改时将该IList转换为ViewModel上的实际数据绑定ObservableCollection)。理由是MSDN将该类呈现为WPF和以UI为中心的类:我应该在MVVM模型中使用ObservableCollections吗?
您可以枚举实现IEnumerable接口的任何集合。但是,要设置动态绑定,以便集合中的插入或删除操作自动更新UI,集合必须实现INotifyCollectionChanged接口。这个接口暴露了CollectionChanged事件,这是一个在底层集合发生变化时应该引发的事件,应该是 。 WPF提供了 ObservableCollection类,它是实现INotifyCollectionChanged接口的 数据收集的内置实现。
问题:我的区别实际上是否有必要?这是额外的工作和额外的代码。我明白这个话题可能对于SO来说太模糊和主观,但也许每个人都有明确的,普遍公认的约定。
很好的回答。这是那些情况下,你不能说绝对没有,但它是一个非常强烈的“代码味道”如果我在MVVM模型看到一个ObservableCollection。 –