无法在OnNavigatedTo方法之外访问QueryString的值

时间:2012-04-13 02:15:00

标签: c# windows-phone-7 c#-4.0

以下代码:

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
 }

我正在获取statement1的输出,而它正在为statement2抛出ArgumentNullException。变量'matchid'是为两个函数全局定义的,但它不保留display()的值。

有没有办法在display()中得到matchid的值?

1 个答案:

答案 0 :(得分:1)

一旦全局变量matchid在OnNavigated中设置,它将保持设置状态,您应该可以在PhoneApplicationPage类的任何实例方法中使用。您需要考虑的事项是:

  1. 在调用matchid之前,是否将display指定为null,因此使用null的matchid并且不能与MessageBox一起使用,或者,
  2. 在OnNavigatedTo中分配matchid后,您是否致电display
  3. 您应该将有关来电的信息指定为display

    顺便说一句,你可以访问OnNavigatedTo之外的NavigationContext。您不需要将其值存储在全局变量中。