设置 TabControl 的背景颜色
Set Background Color of TabControl
我正在制作一个蒙皮很厚的应用程序。我正在尝试在 WPF 中实现选项卡控件。我已经开始对 tabitem 及其各自的背景进行剥皮。但是,我注意到选项卡控件上只有两个 tabitem,剩下的 space 只用白色填充。我需要什么 属性 风格来改变这个白色 space?感谢任何帮助,下面是参考图片以及我的 xaml。
图片:
XAML:
<TabControl Margin="0,35,0,0" Background="#1F1F1F">
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid Name="Panel">
<Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="4,4,0,0" Margin="2,0">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="10,2"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Panel" Property="Background" Value="LightGray" />
<Setter TargetName="Panel" Property="TextBlock.Foreground" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Panel" Property="Background" Value="#4d4d4d" />
<Setter TargetName="Panel" Property="TextBlock.Foreground" Value="White"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Header="Settings">
</TabItem>
<TabItem Header="Results">
</TabItem>
</TabControl>
只需用所需颜色的边框包裹 TabControl。将边距 属性 置于此边框中:
<Border Margin="0,35,0,0" Background="DesiredColor">
<TabControl Background="#1F1F1F">
...
</TabControl>
</Border>
header 背景的白色(或更好的透明)颜色固定在 TabControl 的控件模板中。也可以更改它,但它更复杂。所以如果你只是想有视觉效果,我会建议这个解决方案。
替代方案并不像看起来那么复杂,我会提供答案,以防将来有人需要该信息;
您需要右键单击该元素并编辑模板的副本,然后您可以根据需要编辑此行,
<TabPanel x:Name="headerPanel" Background="COLOR"
默认情况下,背景颜色设置为透明,因此为什么在此对象后面放置边框或任何其他面板也可以。
我正在制作一个蒙皮很厚的应用程序。我正在尝试在 WPF 中实现选项卡控件。我已经开始对 tabitem 及其各自的背景进行剥皮。但是,我注意到选项卡控件上只有两个 tabitem,剩下的 space 只用白色填充。我需要什么 属性 风格来改变这个白色 space?感谢任何帮助,下面是参考图片以及我的 xaml。
图片:
XAML:
<TabControl Margin="0,35,0,0" Background="#1F1F1F">
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid Name="Panel">
<Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="4,4,0,0" Margin="2,0">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="10,2"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Panel" Property="Background" Value="LightGray" />
<Setter TargetName="Panel" Property="TextBlock.Foreground" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Panel" Property="Background" Value="#4d4d4d" />
<Setter TargetName="Panel" Property="TextBlock.Foreground" Value="White"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Header="Settings">
</TabItem>
<TabItem Header="Results">
</TabItem>
</TabControl>
只需用所需颜色的边框包裹 TabControl。将边距 属性 置于此边框中:
<Border Margin="0,35,0,0" Background="DesiredColor">
<TabControl Background="#1F1F1F">
...
</TabControl>
</Border>
header 背景的白色(或更好的透明)颜色固定在 TabControl 的控件模板中。也可以更改它,但它更复杂。所以如果你只是想有视觉效果,我会建议这个解决方案。
替代方案并不像看起来那么复杂,我会提供答案,以防将来有人需要该信息;
您需要右键单击该元素并编辑模板的副本,然后您可以根据需要编辑此行,
<TabPanel x:Name="headerPanel" Background="COLOR"
默认情况下,背景颜色设置为透明,因此为什么在此对象后面放置边框或任何其他面板也可以。