views:

18

answers:

1

I have a NavigationWindow (window1) and a custom navigationstate.

What I currently am using to do my navigation is as such:

  • a function (navigate(string,bool) ) which takes the location (a URL) that I want to go to, plus a boolean which defines if I should make a Back entry (i.e. I've gone into a folder)
  • A seperate function which ties into my NavigationService (allowing me to go back/forth within my history)

My problem though becomes that when I navigate Back, I start overriding my history!

Here's my NavigationService_Navigating(...) (which gets called when I push the back/forth button)

    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
        { } // ...
    }

the problem occurs sporatically. I'll create 3/4 entries in my back, go back and see that my history is full of the page I'm currently looking at.

I've tried everything, but I still cant get it right.

+1  A: 

I've found the source of my heartache: the history menu. Turns out, the fact I was using the chrome from the NavigationWindow was causing my headaches.

To fix this, I've simply turned off navigation controls within the window and made my own (buttons that have the command BrowseBack and BrowseForward).

Indrora