7

In Windows Phone 8.0 Ho usato questo per gestire il pulsante indietro:Qual è l'equivalente di "OnBackKeyPress"

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

Questo evento non esiste sul controllo "Pagina". Come posso gestire un clic sul pulsante Indietro in WP 8.1?

risposta

3

Dai uno sguardo allo Windows.Phone.UI.Input.HardwareButtons.

Se si aggiunge una Pagina di base al progetto, VS aggiungerà una classe NavigationHelper al progetto che aiuta a Navigare attraverso la propria app, è inoltre possibile vedere nel codice sorgente che si è iscritto a Windows.Phone.UI.Input.HardwareButtons.BackPressed.


Nel caso in cui si desidera estendere la gestione del pulsante Back (la gestione della coda EventHandler e così via) si può dare un'occhiata at this answer - il metodo ci aiuterà a prevenire la navigazione indietro (se non ne hai bisogno) e aggiungere altri comportamenti.

+0

ha importanza che t La documentazione afferma "Questa API è supportata solo nelle app native" –

+0

Grazie per questo suggerimento. – Roman

+0

@Roman Ho aggiunto un collegamento ad altre risposte a cui potresti essere interessato: ti aiuta a gestire il BackButton, a prevenire la navigazione e altro. – Romasz

2

È possibile utilizzare Windows.Phone.UI.Input.HardwareButtons come sopra commento. Ma questo evento è sempre presente in ogni pagina. Quindi puoi usare come sotto l'esempio e questo è solo lanciato nella pagina attiva.


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 
} 

Risolvo il mio problema in questo modo.

+0

Non supportato su applicazioni universali di Windows – Nanoc

+0

questo ha lavorato per me in un'applicazione universale. Avevo bisogno, comunque, di annidarlo all'interno delle istruzioni #if WINDOWS_PHONE_APP. – Yosem

+0

Non dovrebbe l'evento HardwareButtons_BackPressed essere rimossi su OnNavigatedFrom? – Elektropepi

1

Im migrazione mia WP8 proyect a WP8.1 universale, in modo di non toccare troppo il mio codice che faccio:

Nella mia classe di base pagina, nel costruttore, ho aggiunto:

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

e poi:

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) 
    { 
    } 

modo da poter utilizzare le mie le sostituzioni in corso per il metodo OnBackKeyPress