Visual Studio 2017,最新Xamarin.Forms,最新棱镜。
无论我尝试什么,我都无法获得绝对的URI。我从app.xaml启动应用程序到登录页面。在loginpageviewmodel中,我会检查用户是否经过身份验证,如果是,那么我想导航到主页。
我可以在不使用绝对uri的情况下导航到主页并且它可以正常工作 - 但后退按钮会返回登录页面 - 不想要。
代码:
if (user.isAuthenticated)
{
navigationService.NavigateAsync("/AppMasterDetailPage/NavigationPage/MainPage"));
}
我添加了所有的http://和myapp.com等等......我尝试的都没有。
如何更改uri以便绝对导航到正确的主页并禁止返回按钮到登录页面?
答案 0 :(得分:0)
您可以查看以下sample project使用"登录屏幕"和汉堡菜单。
我还没有对来自OnNavigatingTo
的导航进行过测试,但由于页面尚未实际被推送到堆栈,我不希望它正常工作。这就是说,如果您检查用户是否在OnNavigatedTo
中进行了身份验证,则可以毫无问题地执行导航。如果您不希望您的用户看到LoginPage,那么我可以告诉您最好的是首先导航到的SplashScreen,然后从那里执行您的逻辑以决定是否转到您的LoginPage或MasterDetailPage
答案 1 :(得分:0)
我有一个解决方案......
我有app.xaml导航到登录页面。在OnNavigatedTo方法中,我检查用户身份验证。如果经过身份验证,那么我打电话
NavigatgeAsync("/masterpage/navpage/mainpage");
这会让我进入应用程序的正确主页,后退按钮不会返回到登录页面 - 它会像预期的那样退出应用程序。所以" / masterpage ..."是我正在寻找的绝对uri。
答案 2 :(得分:0)
下次您应该执行此操作_navigationService.NavigateAsync( new Uri("http://www.xxxx.com/Index/Navigation/Home", UriKind.Absolute));
这是在您进行身份验证并注入NavigationService
之后。