导航到AppxManifest.xml中设置的默认页面以外的页面

时间:2013-10-04 12:49:12

标签: windows-phone-7 windows-phone-8 windows-phone

众所周知,我们必须在WMAppManifest文件中定义默认导航页面。我将MainPage.xaml页面作为默认页面,但我想在应用程序启动时导航到其他页面。我不想从WMAppManifest文件中删除MainPage。

目前我曾尝试过以下内容

  • 在加载的MainPage上,我正在导航到第二页。
  • 在App.xaml.cs中,我在CompleteInitializePhoneApplication方法中设置了以下代码

    RootFrame.Source = new Uri("/Songslist.xaml", UriKind.RelativeOrAbsolute);
    

两者都正常工作但应用程序在导航过程中会挂起几秒钟,从而导致外观不佳。我无法上传sceenshot,因为它发生了几秒钟。我怎么能实现这个目标? 当我使用以下代码时,我得到了NullReference异常,因为RootVisual = null

    (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/Songslist.xaml", UriKind.RelativeOrAbsolute));

1 个答案:

答案 0 :(得分:4)

您应该UriMapper,它允许您根据条件将应用重定向到特定页面。以下是该怎么做:

在App.xaml.cs中的Application构造函数的末尾,将RootFrame.UriMapper设置为执行重定向的新UriMapper

var mapper = new UriMapper();
string page = "/Songslist.xaml";

// Here you map "MainPage.xaml" to "Songslist.xaml"
mapper.UriMappings.Add(new UriMapping
{
    Uri = new Uri("/MainPage.xaml", UriKind.Relative),
    MappedUri = new Uri(page, UriKind.Relative)
});

this.RootFrame.UriMapper = mapper;

优点是它不应该再挂起,并且后面堆栈中不会有MainPage.xaml