2017-10-16 92 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并在属性更改时填充事物列表吗?