В настоящее время я работаю над проектом, который использует шаблон MVVM, и наткнулся на этот сценарий.
Предполагаемый класс Model: INotifyPropertyChanged содержит некоторые свойства, например
public class Model : INotifyPropertyChanged
{
private string rabbit;
public string Rabbit
{
get { return rabbit; }
setter { rabbit = value; OnPropertyChanged("Rabbit"); }
}
}
Теперь я хочу написать ViewModel, который обтекает модель, раскрывая свойства модели вместе с дополнительными свойствами (командами и т. Д.).
Проблема возникает при написании геттеров и сеттеров для свойств, уже существующих в модели. Я закомментировал конкретную часть кода.
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;
}
}
Я не уверен, следует ли мне снова вызывать OnPropertyChanged в ViewModel. Поскольку View привязывается к ViewModel, но не должен иметь доступа к модели, это кажется логичным сделать это.
(P.S. Причина, по которой я сделал свою модель наблюдаемой, заключается в том, что та же модель будет использоваться в другом месте, кроме графического интерфейса, в том же пространстве памяти, где также необходимо получать уведомления об изменениях в модели.)