我需要在第一次运行我的应用程序时导航到某个页面,以收集登录详细信息等。我正在使用IsloatedStorageSettings来保存值以确定这是否是应用程序的第一次运行,这是有效的细
我的问题实际上是在第一次运行应用程序时导航到我的“第一次运行”页面,使用NavigationService,此时似乎没有创建NavigationService,因此仍然为null。什么时候创建NavigationService或者我该如何解决这个问题?
我的代码(在我的主页的构造函数中:
if ((bool)settings["firstRun"])
{
if (NavigationService != null)
{
NavigationService.Navigate(new Uri("/FirstRun.xaml", UriKind.Relative));
}
else
{
MessageBox.Show("Navigation service must be null?"); //always prompts
}
}
else
{
InitializeComponent();
}
答案 0 :(得分:6)
Peter Torr在重定向初始导航方面有一个很棒的blog post,但是对于用户登录,我建议你使用全屏弹出窗口或者对你的“正常”进行登录控制“根据您的首次运行条件启动页面并切换可见性。
答案 1 :(得分:2)
在课堂上添加
private bool m_onNavigatedToCalled = false;
在ctor
this.LayoutUpdated += new EventHandler(MainPage_LayoutUpdated);
然后在代码中
void MainPage_LayoutUpdated(object sender, EventArgs e)
{
if (m_onNavigatedToCalled)
{
m_onNavigatedToCalled = false;
Dispatcher.BeginInvoke(() =>
{
if (NavigationService != null)
{
MessageBox.Show("Navigation not null?"); //always prompts
}
else
{
MessageBox.Show("Navigation service must be null?");
}
//StartApp(); do all stuff here to keep the ctor lightweight
}
);
}
}