2012-11-20 297 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)) 
    } 
); 

你缺少額外的括號和你有一個額外的分號在那裏扔。