2

对于以下代码:

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 的值???

4

1 回答 1

1

一旦matchid在 OnNavigated 中设置了全局变量,它将保持设置状态,之后您应该能够在您PhoneApplicationPage的类中的任何实例方法中使用它。你需要研究的事情是:

  1. 您是否matchid在调用之前分配回 null display,因此使用为 null 且不能与 MessageBox 一起使用的 matchid,或者,
  2. display在 OnNavigatedTo 中分配 matchid 后是否调用?

您应该指定有关调用的信息display

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

于 2012-04-21T11:54:21.090 回答