我不認爲有任何簡單的方法。
要麼你可以改變模型,所以它支持INotifyPropertyChanged
- 例如,
class Model : MvxNotifyPropertyChanged
{
public string A {
get { return _a; }
set { _a = value; RaisePropertyChanged(() => A); }
}
}
我用第一種方法,當我用一個計算器庫 - 其中有模型實體,如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類的控制權時,我已經使用了這種方法 - 當它被授予給我時。
...或作爲方法的擴展,您可以拼合屬性到父視圖模型:
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); }
}
}
我用這個方法只剛好有一對夫婦屬性擔心。
總體......記住,視圖模型是有成爲Model of the View
- 這是確定的屬性值從模型對象複製到/。
你的意思是當模型實例的屬性「A」被改變時,模型RaisePropertyChanged沒有被觸發? –