2012-11-20 301 views
0

在我mainpage.xaml,我检查了本地存储,如果该方法GetAccept返回假的,我需要重定向到Mentions.xaml但问题是,的NavigationService在这一步空,所以我赶nullreferenceexecption重定向页面

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

我该如何做这个重定向?

回答

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

第一个遵循这个Link

NavigationService被实例化时,当前页面中使用是一个无初始化NavigationService这对你的NullReference Exception原因引发的Load事件,在您的解决方案。所以,如果你做手工页面的加载事件,那么你会得到你的NavigationService实例,下面的代码片断是为手动加载网页加载事件,您的网页后,写这篇文章的权利InitializeComponent()方法

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

发件人和事件不被编译器重新识别 – user1428798

0

您需要获取正确的语法。尝试复制下面我放的东西。

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

你缺少额外的括号和你有一个额外的分号在那里扔。