Как обработать кнопку "Назад" на Windows Phone 7

На эмуляторе Windows Phone 7, когда аппаратная кнопка "Назад" нажимается, состоит в том поведение по умолчанию, чтобы это закрыло Ваше текущее приложение. Я хочу переопределить это поведение по умолчанию так, чтобы оно перешло к предыдущей странице в моем приложении.

После некоторого исследования кажется, что должно быть возможно сделать это путем переопределения метода OnBackKeyPress, как так:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    // do some stuff ...

    // cancel the navigation
    e.Cancel = true;
}

Однако нажатие на кнопку "Назад" все еще закрывает мое приложение. Ставя точку останова, вышеупомянутый метод показывает, что это никогда не называют. У меня есть другая точка останова на моем коде выхода приложения, и эта точка останова поражена.

Есть ли что-то еще, что я должен сделать для прерывания кнопки "Назад"?

43
задан skaffman 20 May 2010 в 11:08
поделиться

1 ответ

Похоже, что невозможно переопределить метод OnBackKeyPress для перехвата нажатия клавиши "назад", если вы не используете метод Navigate для перемещения между страницами в вашем приложении.

Мой предыдущий метод навигации заключался в изменении визуального отображения корня, например:

App.Current.RootVisual = new MyPage(); 

Это означало, что я мог держать все свои страницы в памяти, поэтому мне не нужно было кэшировать данные, хранящиеся на них (некоторые данные собираются по сети).

Теперь, похоже, мне нужно использовать метод Navigate на фрейме страницы, который создает новый экземпляр страницы, на которую я перехожу.

(App.Current.RootVisual as PhoneApplicationFrame).Navigate(
                                    new Uri("/MyPage.xaml", UriKind.Relative)); 

Как только я начну использовать этот метод для навигации, я смогу переопределить обработку кнопки "Назад" способом, описанным в моем вопросе...

29
ответ дан 26 November 2019 в 23:04
поделиться