2010-02-16 5 views
1

J'ai un NavigationWindow (fenêtre1) et un navigationstate personnalisé.histoire NavigationWindow ne sauve pas correctement les états

Ce que je suis actuellement en utilisant pour faire ma navigation est en tant que telle: qui prend l'emplacement (URL) que je veux aller,

  • une fonction (la navigation (string, bool)) plus un booléenne qui définit si je dois faire une entrée arrière (ie je suis allé dans un dossier)
  • une fonction séparée qui lie dans mon NavigationService (me permettant de revenir en arrière/en avant dans mon histoire)

mon problème cependant devient que lorsque je navigue Retour, je commence à remplacer mon histoire!

Voici mon NavigationService_Navigating (...) (ce qui est appelé quand je pousse le avant/arrière bouton)

void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e) 
    { 
     try // If something goes wrong, just bail. 
     { 
      // If we're going backwards, we want to remember the current location. 
      if (e.NavigationMode == NavigationMode.Back) { e.ContentStateToSave = new GopherNavState(cLocation); } 
       // use our internal navigation to move to the location, but dont create a back entry. 
       navigate((e.TargetContentState as GopherNavState).tLocation, false); 
     } 
     catch 
     { } // ... 
    } 

le problème se produit sporatically. Je vais créer 3/4 entrées dans mon dos, revenir en arrière et voir que mon histoire est pleine de la page Je cherche actuellement à.

J'ai tout essayé, mais je ne peux toujours pas faire les choses.

Répondre

1

que j'ai trouvé la source de mon chagrin d'amour: le menu historique. Il s'avère, le fait que j'utilisais le chrome de la NavigationWindow était à l'origine de mes maux de tête.

Pour résoudre ce problème, je l'ai simplement éteint les contrôles de navigation dans la fenêtre et fait mes propres (boutons qui ont la commande BrowseBack et BrowseForward).