DataTemplate中的Prism区域

时间:2018-05-08 12:37:40

标签: c# wpf mvvm prism

我已实施WizardControl(由UserControl和相关联的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内的区域永远不会被创建。

这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

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

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

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