如何在WP8中实现自定义导航

时间:2013-03-29 23:07:03

标签: windows-phone-8 navigationservice

我对Windows手机开发完全陌生。实际上我尝试为我的应用程序实现导航流程。

我想实现这个简单的流程:

  1. 当应用启动时,我会检查用户是否已登录
  2. 然后,我导航到MainPage等等
  3. 其他我导航到登录页面
  4. 如果登录成功
  5. ,用户将继续登录页面并转到主页面

    我已经尝试了一些解决方案:

    在App.xaml.cs

    UriMapper mapper = Resources["uriMapper"] as UriMapper;
    RootFrame.UriMapper = mapper;
    
    Uri loginPage = new Uri("/LoginPage.xaml", UriKind.Relative);
    Uri mainPage = new Uri("/MainPage.xaml", UriKind.Relative);
    
    if (!ClientApi.IsAuthenticated)
    {
        mapper.UriMappings[0].MappedUri = loginPage;
    }
    else
    {
        mapper.UriMappings[0].MappedUri = mainPage;
    }
    

    工作但登录后我无法导航到我的应用程序中的其他页面

    我在我的MainPage中重写OnNavigatedTo(NavigationEventArgs e)

    if (!App.ClientApi.IsAuthenticated)
    {                
        NavigationService.Navigate(new Uri("/LoginPage.xaml", UriKind.Relative));
    }
    

    但是当我点击后退按钮时,应用程序不会返回并停留在登录页面上。(我理解为什么。前一页是主页,我覆盖导致循环的OnNavigatedTo)

    我做错了什么?

    PS:

    我正在使用

1 个答案:

答案 0 :(得分:0)

您需要覆盖MapUriUriMapper方法。

documentation州:

  
    

启动应用程序时,它会在初始化期间分配URI映射器。在启动任何页面之前,应用程序调用URI映射器的MapUri方法来确定要启动的页面。 URI映射器返回的URI是应用程序启动的页面。

  

或者您使用以下提议的解决方案之一:

SO

MSDN Blog

最后一个似乎最合适。