何时在windows phone项目中实现INotifyPropertyChanged

时间:2013-12-14 07:19:53

标签: c# windows-phone-7 mvvm

我开始使用基于MVVM方法的新项目。我将从某个Web服务异步加载一些数据。我对在视图模型中实现此INotifyPropertyChanged接口的位置感到困惑,模型或两者。 此外,如果我在模型上实现INotifyPropertyChanged(我们称之为ModelA)。然后我创建一个ObservableCollection<ModelA>,它是不是多余的,因为ObservableCollection本身跟踪对列表所做的任何数据更改?

3 个答案:

答案 0 :(得分:2)

ObservableCollection类仅在以下操作时更新UI:

  • 项目已添加到集合中。
  • 项目已从集合中删除。
  • 收藏很清楚。

但是,如果您的情况为property changes in underlying itemModelA,则为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。