强制TabPanel使用指定的TabItem模板

时间:2011-02-12 16:04:07

标签: c# .net wpf xaml tabcontrol

所以我创建了自己的TabControlTabItem模板(都带有x:Name属性),我这样使用它们:

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

正如预期的那样,这会使窗口中的所有TabControl都使用MyTabControl模板,但它仍会使用旧的TabItem模板。如何使其工作,以便上面的代码以某种方式设法为该模板中的每个TabItem设置样式以使用MyTabItem模板?

当然我可以编辑MyTabControl模板并手动设置模板,但这需要我使用除TabPanel容器之外的其他内容(可能是StackPanel)。是否有可能告诉TabPanel为每个TabItem使用特定模板?

MyTabControl我用它来显示TabItem s:

<TabPanel IsItemsHost="True" />

我正在寻找类似的东西(我不知道这是否可行):

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

1 个答案:

答案 0 :(得分:2)

我相信这会奏效: 为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键的样式,这会将所有TabItem设置为此样式。

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

你也可以看看这里: http://blogs.intuidev.com/post/2010/01/25/TabControlStyling_PartOne.aspx