0

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

目前我已经尝试过以下事情

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

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

两者都在工作,但应用程序在导航期间挂起几秒钟,这看起来很糟糕。我无法上传截图,因为它发生了几秒钟。我怎么能做到这一点?当我使用以下代码时,我得到了 NullReference 异常,因为 RootVisual=null

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

1 回答 1

4

您应该使用UriMapper,它将允许您根据条件将应用程序重定向到特定页面。这是怎么做的:

在 App.xaml.cs 中的 Application 构造函数的末尾,将 设置为执行重定向RootFrame.UriMapper的 new 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在后堆栈中。

于 2013-10-04T13:18:57.697 回答