【发布时间】:2015-05-17 10:54:08
【问题描述】:
我目前正在开展一个利用 MVVM 模式的项目,并且遇到了这种情况。
假设一个类 Model : INotifyPropertyChanged 包含一些属性,例如
public class Model : INotifyPropertyChanged
{
private string rabbit;
public string Rabbit
{
get { return rabbit; }
setter { rabbit = value; OnPropertyChanged("Rabbit"); }
}
}
现在,我希望编写一个封装模型的 ViewModel,将模型的属性与其他属性(命令等)一起公开。
为 Model 中已经存在的属性编写 getter 和 setter 时出现问题。代码的具体部分我已经注释掉了。
public class ViewModel : INotifyPropertyChanged
{
private Model modelObject;
public string Rabbit
{
get { return modelObject.rabbit; }
setter
{
modelObject.rabbit = value;
OnPropertyChanged("Rabbit"); // Should OnPropertyChanged be called here?
}
}
public ViewModel(Model modelObject)
{
this.modelObject = modelObject;
}
}
我不确定是否应该在 ViewModel 中再次调用 OnPropertyChanged。由于 View 绑定到 ViewModel 但不应该能够访问模型,这样做似乎是合乎逻辑的。
(P.S. 我让我的模型可观察的原因是,相同的模型将在同一内存空间中除 GUI 之外的其他地方使用,其中还需要通知模型的更改。)
【问题讨论】:
标签: c# wpf mvvm getter-setter