我正在开发一个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;
}
请帮帮我
答案 0 :(得分: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
}
}