Приложение Windows Phone 7 - кнопка «Назад» вызывает новый экземпляр страницы - PullRequest
2 голосов
/ 15 февраля 2012

У меня была проблема, когда в некоторых случаях в эмуляторе, когда я нажимал кнопку «Назад», аппаратная страница загружалась с вызываемым конструктором, а в другой раз конструктор не вызывался. Почему это так? Это потому, что это эмулятор?

1 Ответ

0 голосов
/ 01 октября 2012

Как вы выполняете навигацию?Отменяете ли вы первоначальный 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;
}
...