gpt4 book ai didi

c# - Prism WPF 动态区域

转载 作者:行者123 更新时间:2023-12-05 03:49:07 25 4
gpt4 key购买 nike

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

<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 Binding RegionManager.RegionName我被解释说我不应该绑定(bind) RegionManger.RegionName,所以我的问题是,我应该如何实现这些要求?

repo 链接:https://github.com/moisejbraver/ModulesTest

最佳答案

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

<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);

我制作了一个界面,所有选项卡的 View 模型都将实现,它包含

  1. 选项卡名称
  2. 标签是否可见。

您可能需要根据需要更改一些细节。

关于c# - Prism WPF 动态区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64114543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com