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

Posted

技术标签:

【中文标题】C# WPF:如何减少选项卡之间的线条粗细【英文标题】:C# WPF: How to reduce thickness of lines between tabs 【发布时间】:2021-11-24 21:30:21 【问题描述】:

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

不幸的是,我在谷歌和这里用来描述这个的词很难弄清楚我需要改变什么属性/属性。我尝试在除第一个选项卡之外的所有选项卡上使用Margin="-1,0,0,0" 将它们“挤压”在一起,但这无意中迫使除第一个选项卡之外的所有选项卡在活动/选择/按下时不放大。

这是选项卡控件,基本上没有修改,两个非活动选项卡之间的双边框似乎是默认外观:

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

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

对此的任何帮助将不胜感激!这可能是一个非常简单的解决方法,但我对 tabcontrols 不太熟悉,并且查看属性并没有给我正确的洞察力来自己解决它。

【问题讨论】:

【参考方案1】:

改变 TabItem 的 Header 的 BorderThickness 的唯一方法是编辑它的 ControlTemplate。在设计中,右键单击标题并选择编辑模板 > 编辑副本。当IsSelected 为假且TapStripPlacement 为Top 时,您必须编辑更改TabItem 的mainBorder 的BorderThickness 的MultiDataTrigger。找到此代码:

<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。

【讨论】:

以上是关于C# WPF:如何减少选项卡之间的线条粗细的主要内容,如果未能解决你的问题,请参考以下文章

如何将 WPF 选项卡项标题拉伸到父控件宽度

wpf 实现多个选项卡左右移动

如何确保我的 WPF TabControl 在至少包含一个选项卡时始终具有选定的选项卡?

WPF TabControl 如何在鼠标向上而不是鼠标向下更改选项卡?

WPF 选项卡控件样式

在 WPF 中开始时绑定所有选项卡项视图模型