更改帧时出现参数为空异常

8

我正在尝试在Windows 8应用程序中更改框架。我尝试按照这个页面上的教程进行操作,但是我一直收到相同的错误提示。

在这一行代码中,我收到了ArgumentNullException错误:

frameState[_pageKey] = pageState;

在LayoutAwarePage.cs类中的OnNavigatedFrom方法中。现在我不确定为什么出现这个错误,因为我觉得我的代码里没有什么会导致它的东西。我的按钮onclick函数有这段代码:
DateTime chosenDateTime = new DateTime(year, month, day, hours, minutes, seconds);
this.Frame.Navigate(typeof(MainPage), chosenDateTime.ToString());

我的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();
}

有人能告诉我如何解决这个问题吗?

谢谢。

2个回答

12

好的,我已经找到了自己问题的答案!

在我所提及的两个页面上,我必须至少实现了这2种方法的最小实现:

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

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

在这些方法中非常重要。


0

可能会触发此问题的另一种情况是,如果页面已不再附加到任何框架上(例如,由于事件处理程序或其他引用而仍然在内存中,但其框架已从页面上导航离开)。

如果您在可能被多次触发或附加到事件多次的事件处理程序中调用 Frame.Navigate() ,则很容易出现这种情况(第一次调用将起作用,但第二次调用将在页面不再具有任何框架后调用)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接