何时在windows phone项目中实现INotifyPropertyChanged

本文关键字:实现 INotifyPropertyChanged 项目 phone windows 何时 | 更新日期: 2024-09-21 07:16:30

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

何时在windows phone项目中实现INotifyPropertyChanged

ObservableCollection类仅在以下操作的情况下更新UI:

  • 项已添加到集合中
  • 项目已从集合中删除
  • 集合清晰

但是,如果任何property changes in underlying item,即您的案例中的ModelA,则它是won't be reflected on UI,除非您的Model类正在实现INotifyPropertyChanged接口并在属性更改时引发PropertyChanged事件。

因此,作为经验法则,您应该在ViewModel层和Model层实现INPC

实际上,您需要将INotifyPropertyChanged实现为对象,该对象的属性将使用数据绑定显示在UI中。若您将UI直接绑定到模型的属性,那个么您也需要在模型中实现它。

ObservableCollection仅在添加对象或从集合中删除对象时通知UI。若要在该ObservableCollection中的一个或多个对象的属性发生更改时通知UI,您仍然需要在该对象类中实现INotifyPropertyChanged。

答案很简单。如果您需要您的模型来实现INotifyPropertyChanged,那么它应该实现。冗余与否如果你需要跟踪一个属性,你最好使用该事件,而不是ObservableCollection。