【发布时间】:2017-02-23 21:18:20
【问题描述】:
我有一个带有多个 TabItem 的 TabControl。我试图让它们有一个更扁平的设计。这个想法是让选项卡的外边框消失,活动选项卡由选项卡底部的绿线指示。我已经能够让绿线完美地工作,但无论我做什么,我都无法摆脱每个 TabItem 的左、顶和右线。
由于我的规范中的文本格式限制,我已将 TabItem 标头包装到由边框包装的 TextBlock 中。我怀疑这种组合可能与它有关。如果有办法在活动选项卡上显示绿色底部边框,同时允许换行符(每个选项卡有两个单词需要分成两行)和选项卡标题中的文本居中,我完全可以更改我的配置。我尝试了 BorderThickness、Margin 和 Padding 属性的各种组合,但均无济于事。
<TabControl HorizontalAlignment="Stretch" VerticalContentAlignment="Stretch" x:Name="tabControl">
<TabItem MaxWidth="55" HorizontalAlignment="Center" Background="White">
<TabItem.Header>
<Border Style="{StaticResource TabItemText}">
<TextBlock TextAlignment="Center" Text="Actions Needed" TextWrapping="Wrap"></TextBlock>
</Border>
</TabItem.Header>
</TabItem>
</TabControl>
这是标签着色代码。目前它做了一些多余的事情,但它说明了我正在尝试做的事情。
<Style x:Key="TabItemText" TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=TabItem}}" Value="True">
<Setter Property="BorderBrush" Value="#57B481"/>
<Setter Property="BorderThickness" Value="0 0 0 4"/>
<Setter Property="Margin" Value="0 0 0 -3"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=TabItem}}" Value="False">
<Setter Property="BorderThickness" Value="0 0 0 0"/>
<Setter Property="Margin" Value="0 0 0 -3"/>
</DataTrigger>
</Style.Triggers>
</Style>
【问题讨论】: