Xamarin.Forms+反应UI主页

Xamarin.Forms+反应UI主页,xamarin.forms,reactiveui,Xamarin.forms,Reactiveui,如何收听在母版页的代码隐藏和this.WhenActivateddisposables=>{}中选择的MasterPage.onimselected;作用还是应该在viewmodel中以某种方式执行此操作?您可以使用。 假设您在母版页中使用ListView: this.WhenActivated (d => { Observable.FromEventPattern (h => MasterPage.ListView.ItemSelected += h,

如何收听在母版页的代码隐藏和this.WhenActivateddisposables=>{}中选择的MasterPage.onimselected;作用还是应该在viewmodel中以某种方式执行此操作?

您可以使用。 假设您在母版页中使用ListView:

this.WhenActivated (d => {
    Observable.FromEventPattern (h => MasterPage.ListView.ItemSelected += h, 
                                 h => MasterPage.ListView.ItemSelected -= h)
              .Subscribe (DoSomethingWithMySelectedItem)
              .DisposeWith (d);
});

在Qonstukt的帮助下,我最终做了:

Observable.FromEventPattern<SelectedItemChangedEventArgs>(h => masterPage.ListView.ItemSelected += h,
                                                h => masterPage.ListView.ItemSelected -= h)
                            .Subscribe(x => OnItemSelected(x.Sender, x.EventArgs))
                            .DisposeWith(disposables);
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e.SelectedItem is MasterPageItem item)
        {
            var nextPage = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
            nextPage.BarBackgroundColor = Constants.ToolbarColor;
            nextPage.BarTextColor = Constants.ToolbarTextColor;
            Detail = nextPage;
            masterPage.ListView.SelectedItem = null;
            IsPresented = false;
        }
    }