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. displayOnNavigatedToでmatchidが割り当てられた後に電話をかけますか?

への呼び出しに関する情報を指定する必要がありますdisplay

ところで、OnNavigatedToの外部でNavigationContextにアクセスできます。その値をグローバル変数に格納する必要はありません。

于 2012-04-21T11:54:21.090 に答える