9

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

我正在设计一个企业级 WPF 应用程序,它看起来很像带有Ribbon工具栏而不是工具栏的 Outlook。当用户单击RibbonButton. 请记住,他的功能区在所有模块中共享。

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

所以我的问题是,当我导航到不同的模块时,如何告诉框架关闭用户控件?我试过设置JournalEntry.KeepAlive="False",但还是不行。有什么想法吗?确实没有太多代码可以发布,但是如果对您有帮助,我可以这样做。

4

1 回答 1

11

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

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
于 2010-02-17T23:15:09.517 回答