我遇到了一个问题,在模拟器中的某些实例上,当我单击后退硬件按钮时,后页加载并调用了构造函数,而其他时候则没有调用构造函数。这是为什么?这是因为它的模拟器吗?
问问题
104 次
1 回答
0
你是如何进行导航的?您是否要取消初始 OnNavigatingFrom 以执行动画,然后在动画完成后再次收听启动导航?
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
if (_pendingNavigation == null)
{
VisualStateManager.GoToState(this, "LeavingPage", true);
_pendingNavigation = e.Uri;
e.Cancel = true;
}
base.OnNavigatingFrom(e);
}
void LeavingPage_Completed(object sender, EventArgs e)
{
var uri = _pendingNavigation;
NavigationService.Navigate(uri);
_pendingNavigation = null;
}
当您调用 NavigationService.Navigate() 时会出现该错误,然后会向导航堆栈添加一个新页面实例。要修复此错误,您需要检查并确保初始页面导航是“新”导航。像这样:
if (e.NavigationMode == NavigationMode.New && _pendingNavigation == null)
{
VisualStateManager.GoToState(this, "LeavingPage", true);
_pendingNavigation = e.Uri;
e.Cancel = true;
}
于 2012-10-01T18:22:22.743 回答