Xamarin.Forms+反应UI主页
如何收听在母版页的代码隐藏和this.WhenActivateddisposables=>{}中选择的MasterPage.onimselected;作用还是应该在viewmodel中以某种方式执行此操作?您可以使用。 假设您在母版页中使用ListView: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.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;
}
}