NavigationWindow历史记录未正确保存状态

时间:2010-02-16 10:07:21

标签: c# wpf navigationwindow

我有一个NavigationWindow(window1)和一个自定义导航状态。

我目前用于导航的内容是这样的:

  • 一个函数(navigate(string,bool)),它获取我想去的位置(一个URL),加上一个布尔值,它定义我是否应该创建一个Back条目(即我已进入一个文件夹)
  • 与我的NavigationService绑定的单独功能(允许我在我的历史记录中往返)

我的问题虽然变成了当我导航回来时,我开始重写我的历史!

这是我的NavigationService_Navigating(...)(当我按下后退按钮时会调用它)

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

问题发生了。我将在我的背后创建3/4条目,回过头来看看我的历史记录中充满了我正在查看的页面

我已经尝试了一切,但我仍然无法做到。

1 个答案:

答案 0 :(得分:1)

我找到了心痛的源头:历史菜单。事实证明,我使用NavigationWindow中的chrome导致了我的头痛。

为了解决这个问题,我只是关闭了窗口中的导航控件并创建了自己的控件(具有BrowseBack和BrowseForward命令的按钮)。