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 ...

questionAnswers(3)

yourAnswerToTheQuestion