Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 棱镜WPF动态区域_C#_Wpf_Prism - Fatal编程技术网

C# 棱镜WPF动态区域

C# 棱镜WPF动态区域,c#,wpf,prism,C#,Wpf,Prism,假设我们有一个带有模块a和B的Prism 7应用程序。主窗口有一个选项卡控件和两个按钮,它们将模块a或B添加到选项卡控件中。我为选项卡控件项创建了一个绑定,并实现了一个项模板,其中包括Prism区域,其名称绑定到项名称 <TabControl ItemsSource="{Binding Tabs}"> <TabControl.ItemTemplate> <DataTemplate>

假设我们有一个带有模块a和B的Prism 7应用程序。主窗口有一个选项卡控件和两个按钮,它们将模块a或B添加到选项卡控件中。我为选项卡控件项创建了一个绑定,并实现了一个项模板,其中包括Prism区域,其名称绑定到项名称

<TabControl ItemsSource="{Binding Tabs}">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
            
        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentControl prism:RegionManager.RegionName="{Binding}" />
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>

我面临的问题是,区域名称似乎没有改变,即,如果我首先添加模块A,所有单击“下一步”按钮将添加模块A,反之亦然。在我之前的问题中,我被解释说我不应该绑定
RegionManger.RegionName
,所以我的问题是,我应该如何实现需求


链接到repo:

这是我处理带有棱柱区域的选项卡控件的方式,我认为这对您也有帮助

<TabControl prism:RegionManager.RegionName="{x:Static local:RegionNames.AdvancedSetup}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Visibility" Value="{Binding DataContext.IsAvailable, Converter={coverters:BooleanToVisibilityConverter}}"/>
            <Setter Property="Header" Value="{Binding DataContext.Name}"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>
我制作了一个界面,所有选项卡的viewmodels都将实现这个界面, 它包含

  • 选项卡的名称
  • 选项卡是否可见

  • 您可能需要根据需要更改某些详细信息。

    您应该只为tabcontrol指定一个区域,然后将所有选项卡注册到同一区域。我以前完全误解了区域的概念及其用途,非常感谢!
    regionManager.RegisterViewWithRegion(RegionNames.AdvancedSetup, setupType);