2017-01-25 3 views
0

Je souhaite effacer tout l'historique de navigation (y compris la page précédente) lorsque je navigue vers une page particulière. J'écris donc le code suivant dans la méthode OnNavigated de ce type de page particulier.NavigationService.ClearHistory ou ClearCache n'efface pas la page précédente du cache

Shell.HamburgerMenu.NavigationService.ClearCache(); 
Shell.HamburgerMenu.NavigationService.ClearHistory(); 
this.Frame.BackStack.Clear(); 
BootStrapper.Current.NavigationService.ClearCache(); 
BootStrapper.Current.NavigationService.ClearHistory(); 

méthode ci-dessus effacement de toute l'histoire de la navigation, sauf page précédente visité à partir du cache.

Nous devons également effacer la page visitée précédente avec d'autres pages.

Veuillez nous indiquer comment résoudre ce problème.

Répondre

1
var currentFrame = this.GetRootFrame(); 
if (currentFrame != null && currentFrame.CanGoBack) 
    currentFrame.BackStack.RemoveAt(currentFrame.BackStackDepth); 
0

Je ne sais pas pourquoi vous appelez Shell.HamburgerMenu.NavigationService.ClearCache() / ClearHistory(). Vous ne savez jamais quand cette ligne de code pourrait tout changer et vous seriez laissé avoir à revenir plus tard pour le changer.

Héritant INavigable ou ViewModelBase du dossier MVVM il aura les remplacements, vous pouvez appeler

//NavigationService comes from ViewModelBase.... Template10.Mvvm namespace 
if(NavigationService.CanGoBack) 
    NavigationService.ClearHistory(); 

NavigationService est initialisé au début de l'application.

J'utilise les 2 lignes de code ci-dessus pour exactement ce que vous demandez, cela fonctionne comme prévu. Il empêche un utilisateur dans mon cas de revenir à un écran normal à partir d'un écran de connexion

côté cache de l'équation désactiver le cache sur chaque page. À l'heure actuelle, je ne crois pas que nous ayons un objectif global dans T10 ou s'il y en a un.

Le code de la réponse précédente affichée est plus ou moins le code exact qui est dans le ClearHistory()/ClearCache() methods

N.B. ClearCache est maintenant obsolète dans la branche de code actuelle, sur le NavigationService pour T10