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

本文关键字:访问 QueryString 的值 外部 方法 OnNavigatedTo | 更新日期: 2023-09-27 18:30:52

对于以下代码:

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 的输出,而它正在为语句 2 抛出 ArgumentNullException。变量 'matchid' 是为这两个函数全局定义的,但它不保留 display() 的值。

有什么方法可以在 display() 中获取匹配 id 的值???

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

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

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

应指定有关调用 display 的信息。

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