对于以下代码:
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的值吗???
最佳答案
在OnNavigated中将全局变量matchid
设置为后,它将保持设置状态,之后您应该可以在PhoneApplicationPage
的类中的任何实例方法中使用。您需要研究的内容是:
是否在调用matchid
之前将display
分配回null,并因此使用null且不能与MessageBox一起使用的matchid,或者,
在OnNavigatedTo中分配了matchid之后,您是否呼叫display
?
您应该指定有关调用display
的信息。
顺便说一句,您可以在OnNavigatedTo之外访问NavigationContext。您无需将其值存储在全局变量中。
关于c# - 无法在OnNavigatedTo方法外部访问QueryString的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10134434/