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

Bre*_*ent 8 wpf mvvm composite-application

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

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

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

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

Mat*_*ton 10

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

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
Run Code Online (Sandbox Code Playgroud)