0

在我的主页中,我尝试导航到另一个页面(这是一个全景页面),我的主页 c# 代码是,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace Panoramatry
{
  public partial class MainPage : PhoneApplicationPage
  {
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        displsy();
    }
    public void display()
    {
        NavigationService.Navigate(new Uri("/GettingStarted.xaml",UriKind.Relative));
    }
  }
}

我的GettingStarted.xaml页面有以下代码,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace Panoramatry
{
  public partial class GettingStarted : PhoneApplicationPage
  {
    public GettingStarted()
    {
        InitializeComponent();
        display();
    }
    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        display();
    }
    public void display()
    {
        MessageBox.Show("Navigation Success");
    }
  }
}

但是在主页中执行导航代码时,出现以下错误,

 An exception of type 'System.NullReferenceException' occurred in Panoramatry.DLL but was not handled in user code

但是当我在主页上使用一个按钮,并将这个导航添加到它的点击事件中,那么它工作得非常好!可能是什么问题呢?提前致谢!

4

1 回答 1

2

啊,好的,现在更清楚了

您不能在页面构造函数中使用 NavigationService,它不会被初始化。在您进行导航的第一页中,将重定向移动到 OnNavigatedTo 事件,例如

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;

 namespace Panoramatry
 {
   public partial class MainPage : PhoneApplicationPage
   {
    // Constructor
    public MainPage()
    {
      InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        display();
    }

   public void display()
   {
    NavigationService.Navigate(new Uri("/GettingStarted.xaml",UriKind.Relative));
   }
  }
}

顺便说一句,处理条件输入页面的更好方法是让您使用 wp 的 UriMapping 功能。在此处查看示例这样,您的后退按钮条目堆栈中没有不必要的页面,为您的用户提供更好的用户体验

于 2013-10-29T15:07:03.110 回答