C# WPF:如何减少选项卡之间的线条粗细

C# WPF: How to reduce thickness of lines between tabs

我想要一个基本未修改的选项卡控件,它与我正在为其创建插件的程序的样式相匹配。我的问题是,默认情况下,tabcontrol 选项卡似乎有一个位于选项卡范围内的边框,这会在非活动选项卡相遇的地方创建一个双边框。我希望这个边框是一条单线,与选项卡顶部的粗细相同(我使用的是顶部右对齐)。

不幸的是,我在 Google 和这里用来描述这个的词让我很难弄清楚 property/attribute 我需要改变什么。我尝试在除第一个选项卡之外的所有选项卡上使用 Margin="-1,0,0,0" 将它们“挤压”在一起,但这无意中迫使除第一个选项卡之外的所有选项卡在 active/selected/pressed.

时不放大

这是选项卡控件,大部分未修改,两个非活动选项卡之间的双边框似乎是默认外观:

这是将 Margin 设置为上述值和两个非活动选项卡之间的边框所需外观的构建:

这是使用上述 Margin 设置的问题原因:

如有任何帮助,我们将不胜感激!这可能是一个非常简单的修复,但我对 tabcontrols 不太熟悉并且查看属性并没有给我正确的见解来自行解决它。

更改 TabItem Header 的 BorderThickness 的唯一方法是编辑其 ControlTemplate。在设计中,右键单击 header 和 select 编辑模板 > 编辑副本。当 IsSelected 为 false 且 TapStripPlacement 为 Top 时,您必须编辑 MultiDataTrigger 以更改 TabItem 的 mainBorder 的 BorderThickness。找到此代码:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
    </MultiDataTrigger.Conditions>
    <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
    <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
</MultiDataTrigger>

将mainBorder的BorderThickness值改为“0,1,1,0”。然后,您可以将样式应用于除第一个之外的每个 TabItem。