2014-06-25 2 views
4

Windows phone 8.1 новый для мира. Основная функция - щелчок на кнопке. Эта функция не работает должным образом, это телефон с Windows 8.1. Это поведение, или я ошибаюсь.Windows phone 8.1 BackPressed не работает должным образом

Ниже приведен код, используемый на домашней странице, но этот код также вызывает вызов со всего другого класса при нажатии. Мне нужно использовать метод ниже только на домашней странице.

Пожалуйста, проверьте код ниже и верните мне хорошее решение.

Пожалуйста, посмотрите мой код:

public HomePage() 
{ 
    this.InitializeComponent(); 
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; 
} 

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
    { 

    } 

Благодаря

ответ

10

Он работает должным образом. BackPressed event работает в приложении. Два варианта, которые приходят на ум:

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

    private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) 
    { 
        Frame frame = Window.Current.Content as Frame; 
        if (frame == null) return; 
    
        if (frame.Content is HomePage) 
        { 
         e.Handled = true; 
         Debug.WriteLine("I'm in HomePage"); 
        } 
        else if (frame.CanGoBack) 
        { 
         frame.GoBack(); 
         e.Handled = true; 
        } 
    } 
    
  • второй вариант - подписаться до Windows.Phone.UI.Input.HardwareButtons.BackPressed при вводе Страница и отписаться, если вы покинете Страница. Обратите внимание, что таким образом есть некоторые подводные камни - вам нужно правильно обрабатывать OnNavigatedTo, OnNavigatedFrom, Suspending и Resuming (больше о Lifecycle here). Также обратите внимание, что подписка должна выполняться перед другими - например, NavigationHelper.

Некоторые замечания - приведенный выше код должен работать, но это также зависит и от других обстоятельств:

  • , если есть что-то другое подписался BackPressed раньше (в App.xaml.cs) - помните, что обычно события запускаются в порядке, они были подписаны чек
  • если вы используете NavigationHelper - он также поддерживает BackPressed
  • не помню, чтобы подписаться несколько раз
  • не разрешайте Пользователю покидать домашнюю страницу
+0

Спасибо за помощь ... полезные советы ... отлично работают :-) – Jeeva123

+1

@ Jeeva123 Добро пожаловать. Вы можете взглянуть на этот фрагмент кода (http://stackoverflow.com/a/23356169/2681948), если вам нужно добавить халдеров в верхнюю часть или сыграть с BackPressed. Может быть, это поможет. – Romasz

 Смежные вопросы

  • Нет связанных вопросов^_^