使用基于视图的导航时隐藏棱镜区域

时间:2020-03-31 09:08:54

标签: wpf mvvm prism

<DockPanel LastChildFill="True">
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellHeaderRegion}" DockPanel.Dock="Top" />
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellStatusRegion}" DockPanel.Dock="Bottom" />
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellContentRegion}"/>
</DockPanel>

问候,

我正在构建具有多个模块的WPF Prism应用程序。一些模块利用了我定义的所有3个区域。 (标题,内容,状态)。其他模块仅利用内容区域。问题是当我使用IRegionManager.RequestNavigate()从一个模块导航到另一个模块时,ShellHeaderRegion和ShellContentRegion仍然包含注入的视图。我希望能够停用这些视图,同时保持在我调用IRegionNavigationJournal.GoBack()时能够重新激活这些视图的能力。有适当的方法来做到这一点吗?

1 个答案:

答案 0 :(得分:0)

运行一些测试并阅读源代码后,我找到了合适的解决方案。 如果要隐藏区域,则需要创建一个空的UserControl。由于没有内容,因此没有宽度/高度和折叠。

不幸的是,调用IRegionNavigationJournal.GoBack()的唯一方法是从IRegion调用,因为在空的UserControl上实现INavigationAware并没有真正的帮助(除非添加了UI元素或可以致电IRegionNavigationJournal.GoBack()

enter image description here