Если моя модель реализует INotifyPropertyChanged и нужна ли моя виртуальная машина?
Пояснение: В реальном случае, когда у вас есть SomeOtherProp, тогда INotifyPropertyChanged абсолютно необходимо реализовать.Что мне действительно нужно, так это то, сколько работы мне нужно выполнить (реплицировать) для правильно сформированных моделей.
Пример:
namespace Question
{
public interface IFoo : INotifyPropertyChanged { }
public interface IBar : INotifyPropertyChanged { }
public interface IModel : INotifyPropertyChanged
{
IFoo Foo { get; set; }
ObservableCollection<IBar> BarCollection { get; }
}
public class VM : TypeSafeViewModelBase
//Clarification: added VM base clase with typesafe override for RaisePropertyChanged
{
private IModel _model;
public VM( IModel model )
{
this._model = model;
//Clarification: added this call...
this._model.PropertyChanged += ( sender, args ) => base.RaisePropertyChanged(args.PropertyName);
//That is the one I have questions about and ultimateley what I want to avoid
}
public IFoo Foo { get { return this._model.Foo; } }
public ObservableCollection<IBar> BarCollection { get { return this._model.BarCollection; } }
//clarification: added this prop declaration
//I know this would be needed as this property is backed by a private member of this class
private string _someOtherProp;
public string SomeOtherProp
{
get { return this._someOtherProp; }
set
{
this._someOtherProp = value;
base.RaisePropertyChanged(() => this.SomeOtherProp);
}
}
}
}
Нужно ли ВМ внедрять INotifyPropertyChanged?И передать все события в V?Или вещи в V связываются с объектами самого низкого уровня, которые реализуют интерфейсы PropertyChanged и CollectionChanged?
Я не могу найти однозначного ответа о том, сколько клеевого кода мне нужно написать, если у меня хорошо сформированный, уведомляющий модель слоя ...
PS.Я разрабатываю в SL4, используя Prism и Ninject, если это имеет значение.Моя модель изменчива, с сохранением состояния и в локальной памяти (я держу локальный кеш, потому что попадание на сервер после каждой операции нецелесообразно).