c# – 在Windows Phone 8中更改UriMapper后重定向页面

我有一个应用程序,当RootFrame首次初始化时,我会检查它是否是第一次启动应用程序.如果是,则将RootFrame UriMapper更改为教程页面.问题是,我似乎无法想出一种方法将用户重定向回MainPage.xaml.到目前为止它不会做任何...

我有一个应用程序,当RootFrame首次初始化时,我会检查它是否是第一次启动应用程序.如果是,则将RootFrame UriMapper更改为教程页面.问题是,我似乎无法想出一种方法将用户重定向回MainPage.xaml.到目前为止它不会做任何事情.

这是我用于更改App构造函数中的初始启动页面的代码:

if (App.Model.SelectFirstStart())
{
    var mapper = new UriMapper();

    mapper.UriMappings.Add(new UriMapping
    {
       Uri = new Uri("/MainPage.xaml", UriKind.Relative),
       MappedUri = new Uri("/TutorialPage.xaml", UriKind.Relative)
       });

       RootFrame.UriMapper = mapper;
    }

当用户点击教程页面中的按钮时,它应该将它们重定向到MainPage.xaml.这是我到目前为止所尝试的:

NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

和:

App.RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

任何帮助将非常感激.谢谢

解决方法:

我看到了几个问题.

首先,您没有更改教程页面中的映射,因此基本上MainPage.xaml仍然映射到TutorialPage.xaml.

第二个问题是即使在修复之后,导航到MainPage.xaml仍然无法工作,因为尽管实际页面是TutorialPage.xaml,RootFrame.CurrentSource仍将指向MainPage.xaml,无论如何.

要解决此问题,您需要在教程页面的按钮单击中执行以下操作

// Inside the Button click event of TutorialPage.xaml
// Change the mapping so that MainPage points to itself
((UriMapper)App.RootFrame.UriMapper).UriMappings[0].MappedUri = 
    new Uri("/MainPage.xaml", UriKind.Relative);

// Since RootFrame.CurrentSource is still set to MainPage, you need to pass
// some dummy query string to force the navigation
App.RootFrame.Navigate(new Uri("/MainPage.xaml?dummy=1", UriKind.Relative));

// Remove back entry so that if user taps the back button 
// you won't get back to tutorial
App.RootFrame.RemoveBackEntry();

本文标题为:c# – 在Windows Phone 8中更改UriMapper后重定向页面

基础教程推荐