c# - C# WPF:如何减少选项卡之间的线条粗细
问题描述
我想要一个与我正在为其创建插件的程序的样式相匹配的大部分未修改的选项卡控件。我的问题是,默认情况下,tabcontrol 选项卡似乎有一个位于选项卡范围内的边框,这会在非活动选项卡相遇的地方创建一个双边框。我希望这个边框是一条线,与选项卡顶部的粗细相同(我使用的是顶部右对齐)。
不幸的是,我在谷歌和这里用来描述这一点的词语让我很难弄清楚我需要改变什么属性/属性。我曾尝试Margin="-1,0,0,0"
在除第一个选项卡之外的所有选项卡上使用将它们“挤压”在一起,但这无意中迫使除第一个选项卡之外的所有选项卡在活动/选择/按下时不放大。
这是选项卡控件,基本上没有修改,两个非活动选项卡之间的双边框似乎是默认外观:
这是Margin
设置为上述值以及两个非活动选项卡之间边框的所需外观的构建:
这是使用上述Margin
设置导致的问题:
对此的任何帮助将不胜感激!这可能是一个非常简单的修复,但我对选项卡控件不太熟悉,并且查看属性并没有给我正确的洞察力来自己解决它。
解决方案
改变 TabItem 的 Header 的 BorderThickness 的唯一方法是编辑它的 ControlTemplate。在设计中,右键单击标题并选择编辑模板 > 编辑副本。IsSelected
您必须编辑 MultiDataTrigger,它在为 false 且TapStripPlacement
为 Top时更改 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。
推荐阅读
- r - 与 r 中的 table() 函数相关的问题
- sql - MySQL - 如何根据另一列中的唯一值转置一列中的单元格?
- google-oauth - Nuxtjs 谷歌身份验证
- linux - 是否可以让 nvidia-smi 命令从任何位置(如 Linux)在 Windows 上运行?
- azure-hdinsight - HDInsight 群集如何作为 HDFS 映射到 Azure 存储?
- java - 我收到此错误原因:java.lang.ClassNotFoundException: javafx.scene.Node 在 Ubuntu Tomcat 服务器中部署战争
- node.js - 创建新项目时 JSON 输入错误意外结束
- reactjs - 我们应该为 Redux 状态使用 PropTypes 吗?
- python-3.x - 升级到 Ubuntu 20.04 后,python 3.7 venv 损坏
- javascript - 如何以在 javascript 中创建的表单中获取表单 foreach 循环选项值?