我有以下方式设置类结构 - 当Model的属性被更改时,不会调用RaisePropertyChanged事件.反正有这个或者我是否需要在ViewModel中展平复杂属性?
Class ViewModel
{
public Model model {
get { return _Service.GetModel();}
set { _Service.SetModel(); RaisePropertyChanged(() => Model);
}
}
class Model
{
public string A {get;set;}
}
Class Service
{
}
Run Code Online (Sandbox Code Playgroud)
我认为没有任何简单的方法.
您可以更改模型以支持INotifyPropertyChanged- 例如
class Model : MvxNotifyPropertyChanged
{
public string A {
get { return _a; }
set { _a = value; RaisePropertyChanged(() => A); }
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用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); }
}
}
Run Code Online (Sandbox Code Playgroud)
当我对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); }
}
}
Run Code Online (Sandbox Code Playgroud)
我只在需要担心几个属性时才使用这种方法.
总的来说......请记住,ViewModel是可以的Model of the View- 可以将属性值复制到Model对象中/从Model对象复制属性值.
| 归档时间: |
|
| 查看次数: |
4683 次 |
| 最近记录: |