所以我创建了自己的TabControl
和TabItem
模板(都带有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" />
答案 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