众所周知,我们必须在WMAppManifest
文件中定义默认导航页面。我将MainPage.xaml
页面作为默认页面,但我想在应用程序启动时导航到其他页面。我不想从WMAppManifest文件中删除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));
答案 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
。