我正在开发Windows 8应用程序,我有以下页面,一个联系人选择器页面,其中有一个带有以下代码的提交按钮

 customContact = (CustomContacts)contactView.SelectedItem;
 this.Frame.Navigate(typeof(AddTask), customContact);

我的AddTask页面具有以下方法
 protected  override void OnNavigatedTo(NavigationEventArgs e)
    { if (e.Parameter == null)
        {code logic }}

现在我在单击按钮期间在布局感知页面中遇到错误,因为在其onnavigatedfrom事件中,PageKey为null
  protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
        var pageState = new Dictionary<String, Object>();
        this.SaveState(pageState);
        frameState[_pageKey] = pageState;
    }

请帮我

最佳答案

_pageKey中设置了LayoutAwarePage.OnNavigatedTo值。由于您在没有调用基本实现的情况下覆盖了自己页面中的OnNavigatedTo,因此永远不会调用LayoutAwarePage设置_pageKey中的代码。

覆盖方法时,除非您非常清楚为什么不执行该方法,否则应始终调用其基本实现。将调用添加到base.OnNavigatedTo(e)应该可以解决您的问题:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (e.Parameter == null)
    {
        // code logic
    }
}

09-26 23:46