删除导航服务的前进条目?

时间:2009-12-15 16:34:07

标签: c# wpf navigation

如何删除导航服务中的所有转发条目?

我试过了,但它崩溃了。

    while (NavigationService.CanGoForward) NavigationService.RemoveBackEntry();

我知道“RemoveBackEntry()”似乎很奇怪,但没有RemoveForwardEntry()方法。

有什么想法吗?

谢谢, 钢钣

编辑1: 我更近一点,我可以访问前向堆栈,甚至输出每个项目,但我似乎无法弄清楚如何删除条目。 _frame.ForwardStack或j上的所有属性或方法都没有提供有关如何删除这些条目的任何信息。

        Window mainWindow = Application.Current.MainWindow;
        Frame _frame = (Frame)mainWindow.FindName("mainFrame");
        foreach (JournalEntry j in _frame.ForwardStack)
        {
            MessageBox.Show(j.Name);
        }

3 个答案:

答案 0 :(得分:2)

嗯,答案永远不会太晚!

以下代码将禁用前向导航:

    void Frame_Navigating(object sender, NavigatingCancelEventArgs e)
    {
        bool b = e.NavigationMode == NavigationMode.Forward;
        if (b)
        {

            e.Cancel = true;
        }
    }

目前它适用于Frame.Navigating事件,但它应该适用于Application以及NavigationWindow(虽然没有测试)。

修改

以下是Behavior的{​​{1}}:

Frame

答案 1 :(得分:0)

如果您在向后退回到当前页面,则应丢失所有转发数据,就像在Web浏览器或Windows资源管理器中一样。

如果您不希望刷新显示在后面的列表中,则可以从后面的列表中删除最后一个条目。

答案 2 :(得分:0)

我稍微阅读了wpf导航,如果你可以为你的应用程序找到NavigationWindow的实例,那么有一个名为ForwardStack的属性,它包含前向导航页面的列表。您应该可以在那里添加或删除页面。

我自己没有试过这个,因为我现在没有一个项目来测试这个,所以让我知道这是否有效,因为我希望将来能够尝试这个。

有关正式会员列表,请参阅msdn链接: http://msdn.microsoft.com/en-us/library/system.windows.navigation.navigationwindow_members.aspx