【发布时间】:2017-06-17 00:52:16
【问题描述】:
我有一个用户控件,其中定义了多个用于注入视图的 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 区域作为测试,并且它起作用了。我通过依赖注入获得区域管理器。关于为什么区域经理不知道其他已定义区域的任何线索?
更新 由于需要更详细的信息,我创建了一个小型独立示例来显示失败的导航。 Prism Navigation Sample
【问题讨论】: