阻止WPF帧在堆栈中存储历史记录

时间:2010-02-17 23:04:45

标签: wpf mvvm composite-application

这似乎是一个简单的解决方案,但我浪费了太多时间试图解决这个问题。也许我正在设计我的应用程序(可能是这种情况),所以如果你有更好的解决方案,请帮助我。

我正在设计一个企业级WPF应用程序,它看起来很像带有Ribbon而不是工具栏的Outlook。当用户点击RibbonButton时,我有很多不同的模块被加载到一个框架中。请记住,他的功能区在所有模块中都是共享的。

所以我有一个带有色带和框架的外壳。当用户单击功能区按钮时,它会将正确的模块(usercontrol)加载到框架中。一切都很好。但是,如果我导航到另一个模块(通过单击另一个RibbonButton),然后单击原始RibbonButton,我现在有两个相同模块的实例打开...但框架中只显示一个。 ..另一个模块位于帧的堆栈中。

所以我的问题是,当我导航到另一个模块时,如何告诉框架关闭用户控件?我已尝试设置JournalEntry.KeepAlive="False",但仍然无法正常工作。有什么想法吗?实际上没有太多的代码可以发布,但如果能帮到你,我可以这样做。

1 个答案:

答案 0 :(得分:10)

如果您从未打算“返回”上一个条目,则可以使用NavigationService.RemoveBackEntry()清除每次导航时的历史记录。最简单的方法是处理Frame的Navigated event

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}