2015-02-12 15 views

risposta

23

Nella versione più recente di Xamarin.Forms potete vedere il vostro stack di spostamento utilizzando

Navigation.NavigationStack 

quindi è possibile utilizzare un

var existingPages = Navigation.NavigationStack.ToList(); 
foreach(var page in existingPages) 
{ 
    Navigation.RemovePage(page); 
} 

Questo codice avrebbe dovuto andare nel codice dietro di un Pagina di navigazione o qualcosa che implementa INavigation.

Ulteriori informazioni Xamarin.Forms.INavigation Members

+0

Grande, io uso la vecchia versione e non ho NavigationStack – Ibrahim

+0

@ibrahim è possibile aggiornare la versione tramite nuget. vai ai riferimenti nel tuo progetto e fai clic con il pulsante destro del mouse e fai clic su Gestisci pacchetti nuget. Quindi selezionare Aggiornamenti e installare l'aggiornamento Xamarin.Form – user1

+0

Sì, lo so, ho appena scritto il motivo della domanda. Perché con la nuova versione di questa domanda è stupido. grazie – Ibrahim

1

o funzione feci per svuotare lo stack e passare a una pagina specificata. (Il caso d'uso è stata l'applicazione è stata disattivata durante l'uso e ho bisogno di cacciare l'utente out)

public async Task PopAllTo(ViewModel vm) 
    { 
     if (vm == null) return; 
     Page page = PreparePage(vm); //replace 'page' with the page you want to reset to 
     if (page == null) return; 
     _navigation.InsertPageBefore(page, _navigation.NavigationStack.First()); 
     await _navigation.PopToRootAsync(); 
    } 
+0

Funziona perfettamente –

0

Si può provare questo ...

public void ResetNavigationStack() 
    { 
     if (_navigation != null && _navigation.NavigationStack.Count() > 0) 
     { 
      var existingPages = _navigation.NavigationStack.ToList(); 
      foreach (var page in existingPages) 
      { 
       _navigation.RemovePage(page); 
      } 
     } 
    } 

e BOOOM !!! quella pila nav è cancellata brotha!

Oppure, se si vuole ripristinare lo stack modale

public async Task<Page> PopAllModals() 
    { 
     Page root = null; 

     if (_navigation.ModalStack.Count() == 0) 
      return null; 

     for (var i = 0; i <= _navigation.ModalStack.Count(); i++) 
     { 
      root = await _navigation.PopModalAsync(false); 
     } 
     return root; 
    } 

E BOOOM! quelle modali sono sparite!

Problemi correlati