WPF TabItem HeaderTemplate 样式应用不一致
WPF TabItem HeaderTemplate style applying inconsistently
当我按照其他 SO 答案提供的有关如何设置选项卡项 header 样式的步骤时,我遇到了一些奇怪的行为。
有
<Style TargetType="{x:Type TabItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate DataType="{x:Type TabItem}">
<buttons:MyButtonControl Content="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
还有一个tab控件如下
<TabControl>
<TabItem Header="Buttons">
<local:Buttons />
</TabItem>
<TabItem Header="Labels">
<local:Labels />
</TabItem>
</TabControl>
我得到一个如下所示的选项卡控件
如何获得应用于所有选项卡 header 的样式?如何删除数据模板周围的默认选项卡 header 样式?
编辑
如果我设计模板而不是 header 模板,内容将停止显示,但至少 header 上的边框会消失。
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<buttons:MyButtonControl Content="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
缺失的部分似乎是 ContentPresenter
,ContentSource
属性 设置为 Header。
(还在 header 中使用按钮可防止选项卡被单击,因为该按钮占用了单击事件。)
此代码显示正确。
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border>
<ContentPresenter ContentSource="Header">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<TextBlock Text="{TemplateBinding Content}" />
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当我按照其他 SO 答案提供的有关如何设置选项卡项 header 样式的步骤时,我遇到了一些奇怪的行为。 有
<Style TargetType="{x:Type TabItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate DataType="{x:Type TabItem}">
<buttons:MyButtonControl Content="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
还有一个tab控件如下
<TabControl>
<TabItem Header="Buttons">
<local:Buttons />
</TabItem>
<TabItem Header="Labels">
<local:Labels />
</TabItem>
</TabControl>
我得到一个如下所示的选项卡控件
如何获得应用于所有选项卡 header 的样式?如何删除数据模板周围的默认选项卡 header 样式?
编辑
如果我设计模板而不是 header 模板,内容将停止显示,但至少 header 上的边框会消失。
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<buttons:MyButtonControl Content="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
缺失的部分似乎是 ContentPresenter
,ContentSource
属性 设置为 Header。
(还在 header 中使用按钮可防止选项卡被单击,因为该按钮占用了单击事件。)
此代码显示正确。
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border>
<ContentPresenter ContentSource="Header">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<TextBlock Text="{TemplateBinding Content}" />
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>