我的WPF应用程序中有一个TabControl
,它使用WPF选项卡控件的默认颜色。换句话说,活动选项卡为白色,非活动选项卡为银色。我已经通过设置Background
对象的Background
属性将所有标签页的TabControl
颜色更改为Beige,但它不会更改标签颜色,只会更改客户端区域。所以,我最终得到了一个活动标签,它有一个米色的客户区和一个白色标签。
我想设置标签Color
以匹配客户区域,以便整个页面为米色。我该怎么办?感谢。
答案 0 :(得分:5)
以下是我的某个项目中标签项样式的示例。对不起一些不相关的代码,我相信你会从中提取你需要的东西。
<Style x:Uid="Style_21" TargetType="{x:Type TabItem}">
<Setter x:Uid="Setter_75" Property="Template">
<Setter.Value>
<ControlTemplate x:Uid="ControlTemplate_7" TargetType="{x:Type TabItem}">
<Grid x:Uid="Grid_13">
<Border
x:Uid="Border" Name="Border"
Background="#F0F0F0"
BorderBrush="LightGray"
BorderThickness="1,1,1,0"
CornerRadius="4,4,0,0"
Margin="0,0,2,0" SnapsToDevicePixels="True" >
<TextBlock x:Uid="TextBlock" FontSize="15"
HorizontalAlignment="Center"
Name="TextBlock"
Foreground="DarkGray">
<ContentPresenter x:Uid="ContentSite" x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"/>
</TextBlock>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger x:Uid="Trigger_14" Property="IsSelected" Value="True">
<Setter x:Uid="Setter_76" TargetName="Border" Property="Background" Value="White" />
<Setter x:Uid="Setter_77" TargetName="Border" Property="BorderBrush" Value="Gray" />
<Setter x:Uid="Setter_78" TargetName="TextBlock" Property="Foreground" Value="Black" />
<Setter x:Uid="Setter_79" TargetName="Border" Property="Margin" Value="0,0,2,-1" />
</Trigger>
<Trigger x:Uid="Trigger_15" Property="IsMouseOver" Value="True" SourceName="Border" >
<Setter x:Uid="Setter_80" TargetName="Border" Property="Background" Value="White" />
<Setter x:Uid="Setter_81" TargetName="Border" Property="BorderBrush" Value="DarkGray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
希望它有所帮助。
答案 1 :(得分:3)
我制定了解决方案。我将把levanovd的答案选为正确答案,以表达对他的帮助。
本质上,修复是对TabItem
控件模板的单行更改。从正常TabItem
控件模板的副本开始,并将控件模板设置为定位TabItem
类型的所有控件。找到IsSelected
触发器,并将其更改为以下内容:
<Setter Property="Background" TargetName="Bd" Value="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}}"/>
Bd
是Border
控件,用于设置TabItem
标签区域的边框和背景。此标记告诉WPF将Bd
Background
属性绑定到相对源。在这种情况下,相对来源是托管Background
的{{1}}的{{1}}属性。因此,当您设置TabControl
的{{1}}属性时,颜色将流向TabItem
中托管的所有Background
控件的标签区域。
以下是我在Blend 3中创建的演示的完整标记:
TabControl