我不认为有任何简单的方法可以解决它。
您可以更改模型以使其支持INotifyPropertyChanged
- 例如
class Model : MvxNotifyPropertyChanged
{
public string A {
get { return _a; }
set { _a = value; RaisePropertyChanged(() => A); }
}
}
当我使用 stackoverflow 库时,我使用了第一种方法 - 它具有模型实体,例如http://stacky.codeplex.com/SourceControl/latest#trunk/source/Stacky/Entities/Answer.cs
INotifyPropertyChanged
...或者你可以用另一个类包装你的模型:
class ModelWrapper : MvxNotifyPropertyChanged
{
private readonly Model _m;
public ModelWrapper(Model m)
{ _m = m; }
public string A {
get { return _m.A; }
set { _m.A = value; RaisePropertyChanged(() => A); }
}
}
当我对 Model 类没有任何控制权时,我使用了这种方法——当它被赋予我时。
...或者作为该方法的扩展,您可以将属性展平为父 ViewModel:
class MyViewModel : MvxViewModel
{
private readonly Model _m;
public ModelWrapper(Model m)
{ _m = m; }
public string A {
get { return _m.A; }
set { _m.A = value; RaisePropertyChanged(() => A); }
}
}
只有当只有几个属性需要担心时,我才会使用这种方法。
总的来说......请记住,ViewModel 是存在的Model of the View
- 可以将属性值复制到模型对象/从模型对象复制。