7

W Windows Phone 8.0 użyłem tego obsłużyć przycisk Wstecz:Jaki jest odpowiednik „OnBackKeyPress”

protected override void OnBackKeyPress(CancelEventArgs e) 
{ 
    base.OnBackKeyPress(e);   
} 

To zdarzenie nie istnieje na kontrolę „Page”. Jak mogę obsługiwać kliknięcie przycisku Wstecz w WP 8.1?

Odpowiedz

3

Spójrz na Windows.Phone.UI.Input.HardwareButtons.

Jeśli dodasz stronę podstawową do swojego projektu, to VS doda do Twojego projektu klasę NavigationHelper, która pomaga w nawigowaniu po aplikacji, możesz również zobaczyć w kodzie źródłowym, że subskrybuje on Windows.Phone.UI.Input.HardwareButtons.BackPressed.


W przypadku, gdy chcesz przedłużyć obsługi Wstecz (zarządzanie eventhandler kolejkę i tak dalej), można spojrzeć at this answer - w sposób nie pomoże zapobiec wstecznej nawigacji (jeśli nie jest to potrzebne) i dodaj trochę więcej zachowań.

+0

Czy to ważne, że T dokumentacja stwierdza: "Ten interfejs API jest obsługiwany tylko w natywnych aplikacjach" –

+0

Dzięki za tę podpowiedź. – Roman

+0

@Roman Dodałem link do innej odpowiedzi, która może Cię zainteresować - pomaga obsłużyć BackButton, uniemożliwić nawigację i więcej. – Romasz

2

Możesz użyć Windows.Phone.UI.Input.HardwareButtons jak powyższy komentarz. Ale to wydarzenie zawsze jest rzucane na każdej stronie. Możesz więc użyć poniższego przykładu, a to tylko rzuca się na aktywną stronę.


protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; 
} 

void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) 
{ 
    e.Handled = true; 
    Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed; 
    // Navigate to a page 
} 

Rozwiązuję mój problem w ten sposób.

+0

Nieobsługiwane w uniwersalnych aplikacjach systemu Windows – Nanoc

+0

To działało dla mnie w uniwersalnej aplikacji. Potrzebowałem jednak zagnieżdżenia go w instrukcjach #if WINDOWS_PHONE_APP. – Yosem

+0

Czy zdarzenie HardwareButtons_BackPressed nie powinno być usunięte w OnNavigatedFrom? – Elektropepi

1

Im migracji moje WP8 Proyect do wp8.1 uniwersalny, tak aby nie dotykać zbyt dużo mój kod robię:

W mojej klasie bazowej stronę, w konstruktorze, dodałem:

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

a potem:

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
    { 
     var args = new CancelEventArgs(); 
     OnBackKeyPress(args); 
     if (args.Cancel) 
     { 
      e.Handled = true; 
     } 
    } 
protected virtual void OnBackKeyPress(CancelEventArgs e) 
    { 
    } 

Więc mogę używać mojego obecnego przesłonięcia dla metody OnBackKeyPress