5

我正在开发一个 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 }}

现在我在按钮单击期间在布局感知页面中遇到错误,因为 PageKey 在其 onnavigatedfrom 事件中为空

  protected override void OnNavigatedFrom(NavigationEventArgs e)
    {                    
        var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
        var pageState = new Dictionary<String, Object>();
        this.SaveState(pageState);          
        frameState[_pageKey] = pageState;
    } 

请帮帮我

4

1 回答 1

9

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

当重写一个方法时,你应该总是调用它的基本实现,除非你很清楚为什么不这样做。添加调用base.OnNavigatedTo(e)应该可以解决您的问题:

protected override void OnNavigatedTo(NavigationEventArgs e)
{ 
    base.OnNavigatedTo(e);
    if (e.Parameter == null)
    {
        // code logic 
    }
}
于 2013-05-23T04:31:06.463 回答