Заставить TabPanel использовать указанный шаблон TabItem - PullRequest
1 голос
/ 12 февраля 2011

Итак, я создал свои собственные шаблоны TabControl и TabItem (оба с атрибутом x:Name), и я использую их так:

    <Style TargetType="TabControl">
        <Setter Property="Template" Value="{DynamicResource MyTabControl}" />
    </Style>

Как и ожидалось, это делает все TabControl s в окне использует шаблон MyTabControl, однако он все еще использует старый шаблон TabItem.Как я могу заставить его работать так, чтобы приведенный выше код каким-то образом умудрялся стилизовать каждый TabItem внутри этого шаблона для использования MyTabItem шаблона?

Конечно, я мог просто отредактировать шаблон MyTabControl и установить шаблон вручную, но это потребовало бы от меня использования чего-то другого, кроме TabPanel контейнера (вероятно, StackPanel).Можно ли как-то сказать TabPanel использовать определенный шаблон для каждого TabItem?

В MyTabControl Я использую это для отображения TabItem s:

<TabPanel IsItemsHost="True" />

ИЯ ищу что-то вроде этого (я не знаю, возможно ли это):

<TabPanel IsItemsHost="True" TabItemsTemplate="MyTabItem" />

1 Ответ

2 голосов
/ 12 февраля 2011

Я считаю, что это будет работать: Создайте стиль для вашего TabItem, который устанавливает его шаблон на ваш шаблон TabItem

<Style x:Key="MyTabItemStyle" TargetType={x:Type TabItem}">
  <Setter Property="Template" Value="{StaticResource TabItemTemplateName}" /> 
</Style>

и измените свой стиль выше на:

<Style TargetType="TabControl">
   <Setter Property="Template" Value="{DynamicResource MyTabControl}" />
   <Setter Property="ItemContainerStyle" Value="{StaticResource MyTabItemStyle}" />
</Style>

Вы также можете просто проигнорировать вышесказанное и создать стиль без ключа для вашего TabItem, и это установит все TabItems на этот стиль.

<Style TargetType={x:Type TabItem}">
  <Setter Property="Template" Value="{StaticResource TabItemTemplateName}" /> 
</Style>

Вы также можете посмотреть здесь: http://blogs.intuidev.com/post/2010/01/25/TabControlStyling_PartOne.aspx

...