首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自嵌套导航页面的棱镜gobackasync

来自嵌套导航页面的棱镜gobackasync
EN

Stack Overflow用户
提问于 2020-03-10 18:55:20
回答 1查看 244关注 0票数 0

使用xamarin forms棱镜:

我的意图是让用户在尝试从"View3“返回导航时输入pw,并仅在pw正确的情况下才允许导航。

我有以下堆栈: MasterDetail/Navigation1/View1/View2/Navigation2/View3

当我尝试从view2导航到navigation2时,我使用模态导航。所以我没有两个导航栏。

Navigation2有一个自定义的“退出”按钮。按下后,我想导航回View2,这样我的堆栈将是:MasterDetail/导航/视图1/视图2

但是,当我尝试以下代码时,什么也没有发生:

代码语言:javascript
复制
 _navigationService.GoBackAsync(useModalNavigation: false);
 _navigationService.GoBackAsync(useModalNavigation: true);
 _navigationService.GoBackToRootAsync();

当我使用_navigationService.NavigateAsync("MasterDetail/Navigation/View1/View2", useModalNavigation:true);时,它可以工作,但随后它重新初始化了视图,这是我想要避免的。

这可能是什么原因造成的?我做错了什么吗?感谢您的任何意见!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-10 19:18:45

在这个PR中,您现在可以在Prism 7.1和更早版本中使用它:

代码语言:javascript
复制
_navigationService.NavigateAsync("../../");

若要弹出导航堆栈的最后两页,请执行以下操作。

另外,你不应该在同一个堆栈中有两个导航页面,我可能会导致你的导航问题,我建议你把你的View3变成一个模态页面,并为安卓BackPress添加一个back验证:

代码语言:javascript
复制
protected override bool OnBackButtonPressed()
{
    if (((MyView3ViewModelPage)BindingContext).ExitCommand != null)
    {
        ((MyView3ViewModelPage)BindingContext).ExitCommand.Execute();
        return true;
    }
    return base.OnBackButtonPressed();
}

并创建您自己的Back Button,因为它是一个表单,您不能从它导航到其他地方,您可以完全控制如何显示该页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60616175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档