【发布时间】:2020-12-15 14:13:02
【问题描述】:
我需要一种方法来获取我在其中一个视图中定义的区域。例如:
<UserControl ...
mvvm:ViewModelLocator.AutoWireViewModel="True"
d:DataContext="{d:DesignInstance errorBars:ErrorBarViewModel, IsDesignTimeCreatable=True}"/>
<ContentControl mvvm:RegionManager.RegionName="{x:Static regions:SidebarRegions.ErrorSidebarContentRegion}" />
在我的 ViewModel 中,我动态地将视图设置为区域。
_navigationService.Navigate<AnySubView>(SidebarRegions.ErrorSidebarContentRegion);
现在我需要从 RegionsManager 中删除该区域。这很容易,但我需要一种方法来递归地删除它。那是因为 ErrorBarViewModel 不知道它导航到的视图是否也定义了一个区域。如果是这样,我会在删除视图并再次添加新实例时收到错误,因为区域已经定义。
我的想法是遍历 DependencyProperties 或 AttachedProperties 并找出孩子定义了哪些区域,但这似乎行不通。
有人知道如何获取视图定义的区域吗?
【问题讨论】:
-
我希望删除包含区域的视图也应该永久删除该区域。曾经有一个类似这样的错误报告,但它已被关闭而不采取行动github.com/PrismLibrary/Prism/issues/1157
-
我认为它正在删除该区域,但如果该区域包含定义其他区域的视图,则不会删除该子区域
-
我认为这是一个错误或一个限制,无论哪种方式,你都必须前往 github,我想。
标签: c# wpf architecture prism region