2012-04-13 64 views
2

對於下面的代碼以外的QueryString的值:無法訪問的OnNavigatedTo方法

public string matchid; 


protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     matchid = null; 
     base.OnNavigatedTo(e); 
     if (NavigationContext.QueryString.TryGetValue("matchid", out matchid)) 
     { 
      MessageBox.Show(matchid);  //statement1   
     } 
    } 

public void display() 
{ 
    MessageBox.Show(matchid); //statement2 
} 

我獲得用於語句1的輸出,而它是扔ArgumentNullException爲語句2。變量'matchid'是爲兩個函數全局定義的,但它不保留display()的值。

有沒有什麼辦法可以在display()中獲得matchid的值???

+2

其中一件事情正在發生 - 要麼是您的類有多個實例,要麼是在'OnNavigatedTo'之前調用display()。 – dasblinkenlight 2012-04-13 02:24:46

+0

什麼時候顯示被調用? – 2012-04-13 02:36:55

+0

當我調用父類的構造函數時,正在調用顯示。 – anurag 2012-04-13 02:38:24

回答

1

一旦將全局變量matchid設置爲OnNavigated to,它將保持設置狀態,之後您應該可以在PhoneApplicationPage的類中使用任何實例方法。你需要考慮的事情是:

  1. 你打電話之前display分配matchid回零,並且因此使用matchid是空,不能用MessageBox的使用,或者,
  2. 待辦事項在OnNavigatedTo中分配了matchid後,您致電display

您應該指定有關電話display信息。

順便說一下,你可以訪問OnNavigatedTo之外的NavigationContext。您不需要將其值存儲在全局變量中。