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。
我想要一个基本未修改的选项卡控件,它与我正在为其创建插件的程序的样式相匹配。我的问题是,默认情况下,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。