WP7导航 - NullReferenceException

时间:2011-01-14 15:23:54

标签: windows-phone-7

我需要在第一次运行我的应用程序时导航到某个页面,以收集登录详细信息等。我正在使用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();
} 

2 个答案:

答案 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
            }
            );
        }
    }