我有一个用户控件,其中定义了多个用于注入视图的 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 区域作为测试,并且它有效。我正在通过依赖注入获取区域经理。关于为什么区域经理不知道其他定义区域的任何线索?
Update由于需要更详细的信息,我创建了一个小型独立示例来显示失败的导航。棱镜导航示例 https://github.com/robgoodwin/samples.git