首页 > 解决方案 > DataTemplate 内的棱镜区域

问题描述

我已经实现了 a WizardControl(由 anUserControl和关联的 表示ViewModel)。该向导应该在没有棱镜的情况下导航 - 它有自己的逻辑。

向导页面已注册DataTemplates

<UserControl.Resources>
    <DataTemplate DataType="{x:Type vm:ViewAViewModel}">
        <view:ViewAView />
    </DataTemplate>

    <DataTemplate DataType="{x:Type vm:ViewBViewModel}">
        <view:ViewBView />
    </DataTemplate>
</UserControl.Resources>
<Grid>
...

    <ScrollViewer>
        <ContentControl Content="{Binding CurrentPage}" />
    </ScrollViewer>

    <Button Content="Prev" Command="{Binding PrevCommand}" />
    <Button Content="Next" Command="{Binding NextCommand}" />
</Grid>

CurrentPage向导选择ViewModel

在特定的向导页面上,我想使用棱镜Region

<ContentControl prism:RegionManager.RegionName="InnerRegion" />

但是当我调用_regionManager.RequestNavigate(...)里面的区域时,RegionManager永远不会创建。

这里出了什么问题?

标签: c#wpfmvvmprism

解决方案


假设您有充分的理由这样做,您可以按照那里的描述从代码隐藏设置区域名称和区域管理器......

基本上你把这些行放在ViewA's 的构造函数中:

RegionManager.SetRegionName( theNameOfTheContentControlInsideViewA, "viewARegionName" );
RegionManager.SetRegionManager( theNameOfTheContentControlInsideViewA, ServiceLocator.Current.GetInstance<IRegionManager>() );

推荐阅读