Domanda

Ho un'app universale di Windows Phone (avviata dal modello di app vuoto) composto da una mainpage e tre pagine secondarie.La navigazione tra queste funziona come previsto (grazie a, in parte, Questa pagina MSDN ).

Il problema che sto entrando è che quando sulla coccola, quando gli utenti preme il pulsante Indietro hardware, la mia app viene messa in background, ma la scheda per la mia app rimane nel commutatore.Questo succede indipendentemente dal fatto che il debugger sia collegato o meno.

Ho provato questo in un nuovo progetto in base al modello di PIVOT App (WP) e vedo lo stesso problema.

Voglio "chiudere" la mia app quando l'utente si preme dalla mainpage, in modo che non sia più nel commutatore delle attività.C'è qualcosa che devo fare manualmente?

È stato utile?

Soluzione

Puoi uscire dalla tua app con application.current.exit ();Nella funzione hardwarebuttons_backpressi qui sotto.

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

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    /* When you don't know the namespace you can use this code instead of the lower

    string[] Namespace = Frame.CurrentSourcePageType.FullName.Split('.');
    if (!e.Handled && Frame.CurrentSourcePageType.FullName == Namespace[0] + ".MainPage")
            Application.Current.Exit();
    */
    if (!e.Handled && Frame.CurrentSourcePageType.FullName == "NAMESPACE.MainPage")
        Application.Current.Exit();
}
.

Spero che funzioni

Saluti, Christian

Altri suggerimenti

È così che ho finito per implementarlo, con i puntatori di User2799780 e Romasz, anche se non sono sicuro al 100% che non sono a doppia (UN) registrando il gestore. dipende dal fatto che ci sia sempre un navigato da ogni navigato, immagino.

modifica: Sono stato ricordato (vedi commenti) che quando viene sospeso, un'app riceve l'evento onnavigatedfrom, ma quando riprende, non vedrà un evento onnavigatedto, facendoti registrare il gestore di non essere registratoquesto caso. L'implementazione sotto è probabilmente influenzata da questo bug .

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    // When we're on this page, pressing Back should close the app
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}

protected override async void OnNavigatedFrom(NavigationEventArgs e)
{
    // When we leave this page, pressing Back should no longer close the app
    Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
}

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    if (!e.Handled)
    {
        Application.Current.Exit();
    }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top