使用基于视图的导航时隐藏 Prism 区域
Hiding a Prism region when using View based Navigation
<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 个区域。 (Header、内容、状态)。其他模块仅使用内容区域。问题是当我使用 IRegionManager.RequestNavigate()
从一个模块导航到另一个模块时,ShellHeaderRegion 和 ShellContentRegion 仍然包含注入的视图。我希望能够停用这些视图,同时在我调用 IRegionNavigationJournal.GoBack()
时保留重新激活这些视图的能力。有没有正确的方法来做到这一点?
经过运行 一些测试和阅读源代码后,我找到了合适的解决方案。
如果你想隐藏一个区域,你需要创建一个空的用户控件。由于它没有内容,因此它不会 width/height 并崩溃。
不幸的是,调用 IRegionNavigationJournal.GoBack()
的唯一方法是从 IRegion
,因为在空的 UserControl 上实现 INavigationAware
并没有真正的帮助(除非你添加 UI 可以调用 IRegionNavigationJournal.GoBack()
)
的元素或事件
<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 个区域。 (Header、内容、状态)。其他模块仅使用内容区域。问题是当我使用 IRegionManager.RequestNavigate()
从一个模块导航到另一个模块时,ShellHeaderRegion 和 ShellContentRegion 仍然包含注入的视图。我希望能够停用这些视图,同时在我调用 IRegionNavigationJournal.GoBack()
时保留重新激活这些视图的能力。有没有正确的方法来做到这一点?
经过运行 一些测试和阅读源代码后,我找到了合适的解决方案。 如果你想隐藏一个区域,你需要创建一个空的用户控件。由于它没有内容,因此它不会 width/height 并崩溃。
不幸的是,调用 IRegionNavigationJournal.GoBack()
的唯一方法是从 IRegion
,因为在空的 UserControl 上实现 INavigationAware
并没有真正的帮助(除非你添加 UI 可以调用 IRegionNavigationJournal.GoBack()
)