Adicionando TabItems dinamicamente
eu tenho umTabControl
ao controle
<TabControl Name="Farms_myVillages"
ItemsSource="{Binding Villages}">
</TabControl/>
No código por trás, adiciono algumas guias dinamicamente aoTabControl
do seguinte modo:
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);
}
OndeVillageUserControl
é umUserControl
que lidam com a vila especificada. Esse código funciona bem e obtém os resultados esperados ...
O problema é que eu não quero que isso esteja no código por trás, mas apenas noxaml
em si.
Eu tento isso:
<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>
Depois de executá-lo, ele lança uma exceção: "O elemento especificado já é o filho lógico de outro elemento. Desconecte-o primeiro".
Perdi algo? Por favor me ajude aqui ...