1

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

我目前用来进行导航的方法是这样的:

  • 一个函数 (navigate(string,bool) ),它获取我想去的位置(一个 URL),加上一个布尔值,它定义我是否应该创建一个返回条目(即我已经进入一个文件夹)
  • 一个与我的 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 条目,回去看看我的历史记录充满了我当前正在查看的页面

我已经尝试了一切,但我仍然无法正确。

4

1 回答 1

1

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

为了解决这个问题,我简单地关闭了窗口中的导航控件并制作了我自己的(具有命令 BrowseBack 和 BrowseForward 的按钮)。

于 2010-02-16T10:50:30.743 回答