2017-10-16 95 views
2

我想對我的ViewModel(使用INotifyPropertyChanged)在我的Xamarin表單ContentPage代碼背後設置的屬性作出反應。處理ViewModel屬性更改Xamarin表單內容頁面

假設我可以訪問我的ViewModel,我「可能」做到這一點,像這樣 -

protected override void OnAppearing() 
    { 
     base.OnAppearing(); 

     // My base class enabled ViewModel access 
     ViewModel.PropertyChanged += (sender, e) => 
     { 
      Debug.WriteLine(e.PropertyName + " Changed on ViewModel"); 

      if (e.PropertyName == "Bob") 
      { 
       DoSomething(); 
      } 
     }; 

我必須考慮從PropertyChanged事件註銷的視圖模型處理?

有沒有其他更優雅的方式來做到這一點?

例如,我已經看到提到的使用Rx擴展實現它的方法,我已經使用MvxPropertyChangedListener和Mvvmcross來幫助解決這類問題。

爲了迴應@Jesus Angulo,我現在這樣做的原因是,當我的項目列表發生更改時,以編程方式在scrollview中填充StackLayout,所以我不必設置任何自定義綁定代碼。

感謝您的幫助。

+1

你想用這個做什麼?因爲這取決於。 –

回答

1

如果你確實必須這樣做,我會建議使用消息傳遞中心在視圖模型中發佈消息,您在後面的頁面中訂閱。

Here is a how to on Messaging Center

但真的必須有辦法做到這一切的視圖模型。

不能將StackLayout更改爲ListView並在屬性更改時填充事物列表嗎?