来自嵌套导航页面的 Prism gobackasync
Prism gobackasync from nested navigationpage
使用 xamarin 形成棱镜:
我的意图是让用户在尝试从 "View3" 导航回来时输入密码,并且仅当密码正确时才允许导航。
我有以下堆栈:
MasterDetail/Navigation1/View1/View2/Navigation2/View3
当我尝试从 view2 导航到 navigation2 时,我使用模式导航。所以我没有 2 个导航栏..
Navigation2 有一个自定义 "exit" 按钮。按下时,我想导航回 View2,这样我的堆栈将是:
MasterDetail/Navigation/View1/View2
但是当我尝试以下代码时,没有任何反应:
_navigationService.GoBackAsync(useModalNavigation: false);
_navigationService.GoBackAsync(useModalNavigation: true);
_navigationService.GoBackToRootAsync();
当我使用 _navigationService.NavigateAsync("MasterDetail/Navigation/View1/View2", useModalNavigation:true);
时它可以工作,但随后它重新初始化了视图,我想避免这种情况。
这可能是什么原因造成的?难道我做错了什么?
感谢您的任何输入!
从此 PR,您现在可以在 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();
}
并创建您自己的后退按钮,因为它是一个表单,您不会从那里导航到其他地方,您可以完全控制如何显示该页面
使用 xamarin 形成棱镜:
我的意图是让用户在尝试从 "View3" 导航回来时输入密码,并且仅当密码正确时才允许导航。
我有以下堆栈: MasterDetail/Navigation1/View1/View2/Navigation2/View3
当我尝试从 view2 导航到 navigation2 时,我使用模式导航。所以我没有 2 个导航栏..
Navigation2 有一个自定义 "exit" 按钮。按下时,我想导航回 View2,这样我的堆栈将是: MasterDetail/Navigation/View1/View2
但是当我尝试以下代码时,没有任何反应:
_navigationService.GoBackAsync(useModalNavigation: false);
_navigationService.GoBackAsync(useModalNavigation: true);
_navigationService.GoBackToRootAsync();
当我使用 _navigationService.NavigateAsync("MasterDetail/Navigation/View1/View2", useModalNavigation:true);
时它可以工作,但随后它重新初始化了视图,我想避免这种情况。
这可能是什么原因造成的?难道我做错了什么? 感谢您的任何输入!
从此 PR,您现在可以在 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();
}
并创建您自己的后退按钮,因为它是一个表单,您不会从那里导航到其他地方,您可以完全控制如何显示该页面