2016-04-28 59 views
4

我是新的Xamarin表单(并在棱镜以及)我试图创建我的第一个Xamarin表单应用程序,并需要登录流。Xamarin表单+棱镜登录流程

我试图检查用户是否登录了application.OnInitialized方法(并根据结果显示登录或主页面)。但问题是,如果我显示登录页面,然后登录后,我显示主页面,然后用户可以导航到登录页面使用硬件按钮..

然后我试图检查在OnNavigationTo在主页面,但它也不工作。我在PRE版本和稳定版本中检查过,并且有不同的错误。在其中一个导航只是没有工作,在其他 - 我有一个错误,主页无法创建。

然后我试图将导航服务注入MainPage(不是视图模型),但我发现导航服务无法注入到那里。

然后我决定从base.OnAppearing和订阅该消息在视图模型中发送消息,并做导航登录如果需要作为回调。但是有一个非常奇怪的问题。如果我在MainPage上使用ToolBarItems,那么在Windows Phone上,它会从登录页面导航回来后消失(但突然,在windows phone上的登录页面上有工具栏项目),看起来像在工具栏项目加载之前,Windows Phone上的OnAppearing方法触发。无论如何,这不是一个解决方案。

然后我决定添加一个空白页面并在base.on之后发送一条消息进入视图模型,并在该视图模型内部重定向到Login或主页面。所以,它适用于一个小的“BUT”。如果我按登录页面或主页面上的硬件返回按钮,我不会关闭应用程序,因为我导航到将页面重定向到登录页面或主页面的空白页面。

有没有适当的方法来实现使用棱镜登录流程?我真的很喜欢它,因为它是非常强大的框架.. 在此先感谢!

回答

3

请记住,OnNavigatedTo仅在使用最新预览版本并调用NavigationService.Navigate时起作用。有几种方法可以采取。首先,您可以导航到MainPage,然后检入OnNavigatedTo。如果未登录,请导航到LoginPage。你也可以检查应用程序启动。当您显示LoginPage时,您可以使用绝对URI来替换整个导航堆栈。基本上这是设置MainPage = new MainPage()。

+0

非常感谢Brian! – Denis