假设我们有一个包含模块 A 和 B 的 Prism 7 应用程序。主窗口有一个选项卡控件和两个按钮,用于将模块 A 或 B 添加到选项卡控件。我为选项卡控制项创建了一个绑定,并实现了一个项模板,其中包括 Prism Region,其名称绑定到项名称。
<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,反之亦然。在我之前的问题中Prism WPF 绑定 RegionManager.RegionName https://stackoverflow.com/questions/64108188/prism-wpf-binding-regionmanager-regionname我被解释说我不应该绑定RegionManger.RegionName
,所以我的问题是,我应该如何实现这些要求?
存储库链接:https://github.com/moisejbraver/ModulesTest https://github.com/moisejbraver/ModulesTest
这是我处理带有棱镜区域的选项卡控件的方式,我认为这对您也有帮助。
<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>
然后我将所有选项卡注册到每个模块的 OnInitialized 函数中的同一区域。
regionManager.RegisterViewWithRegion(RegionNames.AdvancedSetup, setupType);
我已经制作了一个选项卡的所有视图模型都将实现的界面,
它包含
- 选项卡名称
- 选项卡是否可见。
您可能需要根据需要更改一些详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)