所以我正在尝试更改Windows 8应用程序中的帧。我尝试按照this page上的教程进行操作,但我仍然遇到同样的错误。
我在行上收到了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();
}
有人能给我一些关于如何解决这个问题的信息吗?
感谢。
答案 0 :(得分:11)
好吧,所以我找到了自己问题的答案!
在我引用的两个页面上,我必须至少实现了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);
在方法中非常重要。
答案 1 :(得分:0)
可能触发此问题的另一种情况是,如果页面不再附加到任何帧(例如,由于事件处理程序或其他引用它仍然在内存中,但其框架已经从页面导航离开)。
如果您在可能被多次触发或多次附加到事件的事件处理程序中调用Frame.Navigate()
,则很容易意外地执行此操作(第一次调用将起作用,但第二次调用将在之后调用页面不再有任何框架。)