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>

缺失的部分似乎是 ContentPresenterContentSource 属性 设置为 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>