2

我遇到了一个问题,在模拟器中的某些实例上,当我单击后退硬件按钮时,后页加载并调用了构造函数,而其他时候则没有调用构造函数。这是为什么?这是因为它的模拟器吗?

4

1 回答 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 回答