我有一个用户控件,其中定义了多个用于注入视图的 Prism 区域。我决定使用 Prism 视图导航来处理基于用户操作(如下所示)切换我的“SelectedMenuContentRegion”,但我遇到了问题。我确定问题出在我的用法上,但我无法弄清楚我做错了什么。我有以下包含自定义 WPF 控件的用户控件。
<Grid>
<commonwpfcontrols:NavigationPane Background="{StaticResource SecondaryColorBrush}" IsExpanded="False" MenuItems="{Binding MenuItems}">
<commonwpfcontrols:NavigationPane.Content>
<ContentControl prism:RegionManager.RegionName="MapRegion"/>
</commonwpfcontrols:NavigationPane.Content>
<commonwpfcontrols:NavigationPane.SelectedMenuContent>
<ContentControl prism:RegionManager.RegionName="SelectedMenuContentRegion"/>
</commonwpfcontrols:NavigationPane.SelectedMenuContent>
</commonwpfcontrols:NavigationPane>
<Grid>
<ContentControl prism:RegionManager.RegionName="ApplicationOverlay"/>
</Grid>
定义了 3 个区域。如果我做标准
mRegionManager.RegisterViewWithRegion("SelectedMenuContentRegion", () => mUnityContainer.Resolve<MapSettingsView>());
但是,如果我为导航注册视图,它可以按预期工作,如下所示:
mUnityContainer.RegisterTypeForNavigation<MapSettingsView>();
然后尝试稍后导航
mRegionManager.RequestNavigate("SelectedMenuContentRegion ", "MapSettingsView", NavigationComplete);
它失败。我在调试器中注意到区域管理器的区域列表中只有“ApplicationOverlay”区域。因此,我将导航到的区域更改为 ApplicationOverlay 区域作为测试,并且它起作用了。我通过依赖注入获得区域管理器。关于为什么区域经理不知道其他定义的区域的任何线索?
更新 由于需要更详细的信息,我创建了一个小的独立示例来显示失败的导航。 棱镜导航示例