http://code.msdn.microsoft.com/mag200902MVVM/Release/ProjectReleases.aspx?ReleaseId=2026

я есть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>

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

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

Ответы на вопрос(3)

вместо того, чтобы использоватьItemContainerStyle использованиеItemTemplate а такжеContentTemplate, Вы можете взглянуть на этот пример от Джоша Смита для создания вкладок с использованием шаблонов и стилей -

http://code.msdn.microsoft.com/mag200902MVVM/Release/ProjectReleases.aspx?ReleaseId=2026

Сейчас это работает:

<TabControl Name="Farms_myVillages" 
           ItemsSource="{Binding Villages}">
       <TabControl.ItemTemplate>
            <DataTemplate>
                 <TextBlock Text="{Binding Name}"/>
            </DataTemplate>
       </TabControl.ItemTemplate>
      <TabControl.ContentTemplate>
            <DataTemplate>
                <u:VillageResources/>
            </DataTemplate>
      </TabControl.ContentTemplate>
</TabControl>
Решение Вопроса

ItemContainerStyle ноTabControl.ItemTemplate для заголовка иTabControl.ContentTemplate для содержания.

(Исключение может быть связано с тем, что в стиле только одинVillageUserControl создан, но стиль применяется к нескольким элементам табуляции.)

 Sami Abdelgadir Mohammed18 янв. 2011 г., 16:49
да, я сделал это, действительно, это хороший сайт ..
 H.B.18 янв. 2011 г., 14:48
Добро пожаловать, рад, что это помогло :) (Примечание: вы можете пометить ответы с помощью галочки, которая появляется, если вы подведете указатель мыши ниже голосов слева, пока вы не приняли ответы на свои вопросы, Вы могли бы хотеть пройти их и принять ответ, который помог больше всего)
 Sami Abdelgadir Mohammed18 янв. 2011 г., 14:38
да, спасибо Х.Б. от всего сердца ...

Ваш ответ на вопрос