如何从Xamarin.Forms Prism Popup向后导航

时间:2018-07-03 11:11:58

标签: xamarin.forms navigation prism

使用Prism导航的Xamarin.forms在以下情况下不起作用:

  1. OnInitialized NavigationService.NavigateAsync(nameof(LoginView));中的App.xaml.cs
  2. 在LoginViewModel中,一旦登录,我就导航到MainPage await _navigationService.NavigateAsync(new Uri("MainPage", UriKind.Relative),useModalNavigation:true, animated: false);
  3. MainPaga有一个按钮,一旦单击按钮,它将弹出设置页面导航弹出窗口,如:await _navigationService.NavigateAsync(new Uri("SettingView", UriKind.Relative), useModalNavigation: true, animated: false);
  4. SettingView(Popup)有一个Button(LogOut),一旦我单击Button(LogOut),它必须返回LoginView,这里是导航的代码。

                    await _navigationService.ClearPopupStackAsync(animated: false);
                await _navigationService.GoBackAsync(useModalNavigation: true, animated: false);
    

首先我要清除弹出窗口,然后再导航,但是它不会导航回LoginView吗?

2 个答案:

答案 0 :(得分:2)

如果您正在使用PRISM并想“清除”当前堆栈。 您最好使用显式的uri导航。 意味着注销按钮后面的代码应如下所示:

await _navigationService.NavigateAsync("/NavigationPage/LoginView");

通过在URI的开头添加/,将清除当前堆栈。

答案 1 :(得分:1)

在用户确认退出后,您应该使用绝对uri将Loginpage设置为Mainpage

await NavigationService.NavigateAsync(new System.Uri("/LoginPage",System.UriKind.Absolute));