Динамическое добавление элементов вкладки

У меня есть элемент управления 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>

После запуска выдается исключение: «Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его».

Я что-то пропустил? Пожалуйста, помогите мне здесь ...

9
задан ΩmegaMan 6 September 2017 в 15:10
поделиться