绝对 URI 不起作用

Absolute URI won't work

Visual Studio 2017 年,最新 Xamarin.Forms,最新 Prism。

无论我怎样尝试,我的绝对 URI 都无法正常工作。我的应用程序从 app.xaml 启动到登录页面。在 loginpageviewmodel 中,我做了一些检查以查看用户是否经过身份验证,如果是,那么我想导航到主页。

我可以在不使用绝对 uri 时导航到主页并且它可以工作 - 但后退按钮返回到登录页面 - 不需要。

代码:

if (user.isAuthenticated)
{
navigationService.NavigateAsync("/AppMasterDetailPage/NavigationPage/MainPage"));
}

我已经添加了所有的 http:// 和 myapp.com,等等......我试过都没有用。

如何更改 uri 以便 absolute 导航到正确的主页并禁止后退按钮返回登录页面?

您可以查看以下使用 "Login Screen" 和汉堡菜单的 sample project

我还没有测试来自 OnNavigatingTo 的尝试导航,但我不希望它能正常工作,因为页面实际上还没有被推送到堆栈。也就是说,如果您检查用户是否在 OnNavigatedTo 中通过身份验证,您可以毫无问题地执行导航。如果您不希望您的用户看到 LoginPage,那么我能告诉您的最好办法是首先导航到一个 SplashScreen,然后从那里执行您的逻辑以决定是转到您的 LoginPage 还是 MasterDetailPage

我有办法...

我已经 app.xaml 导航到登录页面。在 OnNavigatedTo 方法中,我检查用户身份验证。如果通过身份验证,那么我会调用

NavigatgeAsync("/masterpage/navpage/mainpage");

这让我进入应用程序的正确主页,后退按钮不会返回登录页面 - 它会按预期退出应用程序。所以“/masterpage...”是我正在寻找的绝对 uri。

下次您应该这样做 _navigationService.NavigateAsync( new Uri("http://www.xxxx.com/Index/Navigation/Home", UriKind.Absolute)); 这是在您通过身份验证并注入 NavigationService.

之后