gpt4 book ai didi

c# - 动态添加 TabItems

转载 作者:太空狗 更新时间:2023-10-29 17:37:20 26 4
gpt4 key购买 nike

我有一个TabControl 控件

<TabControl Name="Farms_myVillages"
ItemsSource="{Binding Villages}">
</TabControl/>

在后面的代码中,我向 TabControl 动态添加了一些选项卡,如下所示:

foreach (Village vill in Villages)
{
TabItem tab = new TabItem();
tab.Header = vill.Name;
VillageUserControl c = new VillageUserControl();
c.DataContext = vill;
tab.Content = c;
Farms_myVillages.Items.Add(tab);
}

其中 VillageUserControl 是处理指定村庄的 UserControl。这段代码工作正常,它得到了预期的结果......

问题是我不希望它在后面的代码中,而只是在 xaml 本身中。

我试试这个:

<TabControl Name="Farms_myVillages"
ItemsSource="{Binding Villages}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Name}"/>
<Setter Property="Content">
<Setter.Value>
<u:VillageUserControl DataContext="{Binding}"/>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>

我运行后,它抛出一个异常:“指定的元素已经是另一个元素的逻辑子元素。先断开它。”

我错过了什么吗?请在这里帮助我...

最佳答案

你设置错了,你不应该修改ItemContainerStyle但是TabControl.ItemTemplate标题和 TabControl.ContentTemplate内容。

(异常可能与以下事实有关:在样式中仅创建了一个 VillageUserControl,但该样式适用于多个选项卡项。)

关于c# - 动态添加 TabItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720446/

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