关于更改框架的ArgumentNullException

Loy*_*lar 7 c# argumentnullexception page-state windows-8

所以我正在尝试更改Windows 8应用程序中的帧.我尝试按照本页的教程,但我一直得到同样的错误.

我在线上得到了一个ArgumentNullException:

frameState[_pageKey] = pageState;
Run Code Online (Sandbox Code Playgroud)

在LayoutAwarePage.cs类中,在OnNavigatedFrom方法中.

现在我不确定为什么会出现这个错误,因为我觉得在我的代码中没有任何东西可以导致它.我的按钮onclick函数有以下代码:

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

我的MainPage中的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();
}
Run Code Online (Sandbox Code Playgroud)

谁能给我一些关于如何解决这个问题的信息?

谢谢.

Loy*_*lar 11

好吧,所以我找到了自己问题的答案!

在我引用的两个页面上,我必须至少实现了2种方法的最小实现:

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

protected override void OnNavigatedFrom(NavigationEventArgs e) {
    base.OnNavigatedFrom(e);
}
Run Code Online (Sandbox Code Playgroud)

而且

base.OnNavigatedFrom(e);
base.OnNavigatedTo(e);
Run Code Online (Sandbox Code Playgroud)

在这些方法中非常重要.