ArgumentNullException变化框架(ArgumentNullException on

2019-08-03 17:57发布

所以我想改变帧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();
}

任何人都可以给我一些信息,我怎么能解决这个问题?

谢谢。

Answer 1:

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

在这两个页面我指的是和我必须有至少最小实现的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);

是有在方法非常重要。



Answer 2:

可能引发这个问题的另外一个情况是,如果页面不再附加任何帧(例如,它仍然是因为事件处理程序或其他引用的内存,但是它的框架已经从页面导航离开)。

这是很容易不小心做,如果你调用Frame.Navigate()中可以多次触发或附加到事件多次的事件处理程序(第一次调用的工作,但该页面后,第二个将被称为无不再有任何帧)。



文章来源: ArgumentNullException on changing frame