我开始使用基于MVVM
方法的新项目。我将从某个Web服务异步加载一些数据。我对在视图模型中实现此INotifyPropertyChanged
接口的位置感到困惑,模型或两者。
此外,如果我在模型上实现INotifyPropertyChanged(我们称之为ModelA)。然后我创建一个ObservableCollection<ModelA>
,它是不是多余的,因为ObservableCollection
本身跟踪对列表所做的任何数据更改?
答案 0 :(得分:2)
ObservableCollection
类仅在以下操作时更新UI:
但是,如果您的情况为property changes in underlying item
即ModelA
,则为won't be reflected on UI
,除非您的Model类正在实现INotifyPropertyChanged
接口并在属性更改时引发PropertyChanged事件。
因此,作为一个拇指规则,您应该在INPC
图层和ViewModel
图层同时实施Model
。
答案 1 :(得分:1)
实际上,您需要将INotifyPropertyChanged实现为使用数据绑定在UI中显示属性的对象。如果将UI直接绑定到模型的属性,则还需要在模型中实现它。
ObservableCollection仅在从集合中添加或删除对象时通知UI。要在ObservableCollection中的一个或多个对象的属性发生更改时通知UI,您仍需要在该对象类中实现INotifyPropertyChanged。
答案 2 :(得分:0)
答案很简单。如果你需要你的模型来实现INotifyPropertyChanged那么它应该。如果您需要跟踪单个属性,那么冗余与否,您将更好地使用该事件而不是ObservableCollection。