Sam*_*med 9 c# data-binding wpf xaml tabcontrol
我TabControl
控制了一下
<TabControl Name="Farms_myVillages"
ItemsSource="{Binding Villages}">
</TabControl/>
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,我动态添加一些选项卡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);
}
Run Code Online (Sandbox Code Playgroud)
这里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>
Run Code Online (Sandbox Code Playgroud)
在我运行它之后,它抛出一个异常:"指定的元素已经是另一个元素的逻辑子元素.首先断开它."
我错过了什么?请帮帮我......
H.B*_*.B. 13
您可以设置错误的东西,你不应该修改ItemContainerStyle
,但TabControl.ItemTemplate
页眉和TabControl.ContentTemplate
所需内容.
(例外可能与以下事实有关:在样式中只VillageUserControl
创建了一个,但样式适用于多个选项卡项.)