关于更改框架的ArgumentNullException
所以我试图在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种方法的最小实现:
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); } protected override void OnNavigatedFrom(NavigationEventArgs e) { base.OnNavigatedFrom(e); }
而且
base.OnNavigatedFrom(e); base.OnNavigatedTo(e);
在这些方法中非常重要。
可能触发此问题的另一种情况是,如果页面不再附加到任何帧(例如,由于事件处理程序或其他引用,它仍然在内存中,但其帧已经从页面导航离开)。
如果在可能被多次触发或多次附加到事件的事件处理程序中调用Frame.Navigate()
,则很容易意外地执行此操作(第一次调用将起作用,但第二次调用将在页面编号后调用)更长的任何框架)。
上述就是C#学习教程:关于更改框架的ArgumentNullException分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/988916.html