Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 来自嵌套导航页的Prism gobackasync_Xamarin.forms_Prism - Fatal编程技术网

Xamarin.forms 来自嵌套导航页的Prism gobackasync

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 但当我尝试以下代码时,什么都没有发生:

使用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的结果是一个异常“索引超出范围”。。似乎它无法通过第二个导航页面。。。