2012-12-09 13 views
7

Windows 8のアプリケーションでフレームを変更しようとしています。 this pageでチュートリアルを試してみましたが、同じエラーが発生しています。 OnNavigatedFrom方法では、LayoutAwarePage.csクラスのフレームの変更時にArgumentNullExceptionが発生する

frameState[_pageKey] = pageState; 

私はライン上の例外ArgumentNullExceptionを取得しています。

今、私はこのエラーがなぜ発生するのか分かりません。なぜなら、私のコードには何も起こらないと感じているからです。私のボタンのonclick関数は、このコードがあります。

DateTime chosenDateTime = new DateTime(year, month, day, hours, minutes, seconds); 
this.Frame.Navigate(typeof(MainPage), chosenDateTime.ToString()); 

そして、私のメインページでOnNavigatedTo方法は次のようになります。

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    string parameter = (string)e.Parameter; 
    if (parameter != "") { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     roamingSettings.Values["chosenDateTime"] = parameter; 
     chosenDateTime = Convert.ToDateTime(e.Parameter); 
    } else { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     if (roamingSettings.Values.ContainsKey("chosenDateTime")) { 
      chosenDateTime = Convert.ToDateTime(roamingSettings.Values["chosenDateTime"].ToString()); 
     } 
     if (roamingSettings.Values.ContainsKey("headline")) { 
      chosenDateTextBlock.Text = roamingSettings.Values["headline"].ToString(); 
     } 
    } 
    SetTime(); 
} 

は、誰も私に、私はこの問題を解決することができますどのようになど、いくつかの情報を与えることはできますか?

ありがとうございました。

答えて

10

申し訳ありませんが、私は自分の質問に対する答えを見つけました。

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    base.OnNavigatedTo(e); 
} 

protected override void OnNavigatedFrom(NavigationEventArgs e) { 
    base.OnNavigatedFrom(e); 
} 

そして

base.OnNavigatedFrom(e); 
base.OnNavigatedTo(e); 

がで持っていることは非常に重要だった:私は、私にしてからご参照の両方のページで

は、2つの方法の少なくとも最小限の実装を実装している必要がありましたメソッド。

+1

答えを正しく確認してください;) –

0

この問題を引き起こすもう1つの状況は、ページがどのフレームにも接続されていない場合です(イベントハンドラやその他の参照によってメモリに残っていますが、そのフレームはすでにページから移動しています)。

イベントハンドラでFrame.Navigate()を呼び出すと、複数回トリガされる可能性があり、イベントに複数回アタッチされる可能性があります(最初の呼び出しは機能しますが、2番目の呼び出しはページのno長いフレームはあります)。

関連する問題