在Windows手机中重定向页面

时间:2012-11-20 11:14:32

标签: windows-phone-7 xaml windows-phone

在我的mainpage.xaml中,我检查localstorage,如果方法GetAccept返回false,我需要重定向到Mentions.xaml,但问题是导航服务在此步骤中是空的,所以我捕获nullreferenceexecption < / p>

        public MainPage()
        {
            CacheManager cache = new CacheManager();
            if (!cache.GetAccept())
            {
                NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
            }
            InitializeComponent();
            }

如何进行此重定向?

3 个答案:

答案 0 :(得分:2)

首先关注此Link

当当前页面引发其加载事件时,NavigationService会被实例化,在您的解决方案中,您使用的是未初始化的NavigationService,这是NullReference Exception的原因。因此,如果您手动执行页面的加载事件,那么您将获得NavigationService实例,以下代码是用于手动加载页面加载事件的代码段,在您的页面InitializeComponent()方法之后立即写入

 this.Loaded += (sender, event) =>
  {
      var navigationService = NavigationService;
      navigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
  };

答案 1 :(得分:1)

看来你输了+ = =(发件人,事件)你需要删除额外的=,就像我在下面做的那样。

public MainPage() {

    InitializeComponent();
    CacheManager cache = new CacheManager();
    if (!cache.GetAccept())
    {            this.Loaded += (sender, event) =>{
        NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute)); };
    } 

答案 2 :(得分:0)

您需要正确的语法。尝试复制下面的内容。

this.Loaded += 
(
    (sender, event) =>
    {
        NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml",
            UriKind.RelativeOrAbsolute))
    }
);

你错过了额外的括号,并且你有一个额外的分号。