Xamarin.forms 来自嵌套导航页的Prism gobackasync
使用xamarin forms prism: 我的意图是让用户在尝试从“View3”返回时输入一个pw,并且仅当pw正确时才允许导航 我有以下堆栈: 主细节/Navigation1/View1/View2/Navigation2/View3 当我尝试从view2导航到navigation2时,我使用模式导航。所以我没有2个导航条 Navigation2有一个自定义的“退出”按钮。按下时,我想导航回View2,这样我的堆栈将: 主细节/导航/视图1/视图2 但当我尝试以下代码时,什么都没有发生:Xamarin.forms 来自嵌套导航页的Prism gobackasync,xamarin.forms,prism,Xamarin.forms,Prism,使用xamarin forms prism: 我的意图是让用户在尝试从“View3”返回时输入一个pw,并且仅当pw正确时才允许导航 我有以下堆栈: 主细节/Navigation1/View1/View2/Navigation2/View3 当我尝试从view2导航到navigation2时,我使用模式导航。所以我没有2个导航条 Navigation2有一个自定义的“退出”按钮。按下时,我想导航回View2,这样我的堆栈将: 主细节/导航/视图1/视图2 但当我尝试以下代码时,什么都没有发生:
_navigationService.GoBackAsync(useModalNavigation: false);
_navigationService.GoBackAsync(useModalNavigation: true);
_navigationService.GoBackToRootAsync();
当我使用navigationService.NavigateAsync(“MasterDetail/Navigation/View1/View2”,useModalNavigation:true)时代码>它可以工作,但是它重新初始化了视图,这是我想要避免的
这可能是什么原因造成的?我做错什么了吗?
谢谢你的意见 从这里,您现在可以在Prism 7.1及更早版本中使用:
_navigationService.NavigateAsync("../../");
从导航堆栈中弹出最后2页
另外,您不应该在同一堆栈中有2个导航页面,我可能会导致导航出现问题,我建议您将View3转换为模式页面,并为Android BackPress添加一个反向验证:
protected override bool OnBackButtonPressed()
{
if (((MyView3ViewModelPage)BindingContext).ExitCommand != null)
{
((MyView3ViewModelPage)BindingContext).ExitCommand.Execute();
return true;
}
return base.OnBackButtonPressed();
}
创建你自己的后退按钮,因为它是一个表单,你不会从它导航到其他地方,你可以完全控制如何显示页面我想说“天哪,我怎么会错过这个”但这似乎不起作用。什么都没发生:/@RoyHarel我刚试过,它弹出了两页:/n你用的是NavigateEasync还是GoBackAsync?我用的是NavigateEasync。为了澄清,当我得到当前导航UriPath时,我得到:“/MasterDetail/NavigationPage1/View1/View2/NavigationPage2?useModalNavigation=true/View3”@RoyHarel给我一分钟时间,让我用一个模式页面重新创建,我很感激!另一条线索:navigateasyn的结果是一个异常“索引超出范围”。。似乎它无法通过第二个导航页面。。。