设置TabControl的背景颜色

时间:2015-01-12 07:10:09

标签: c# wpf xaml tabcontrol

我正在制作一个皮肤很厚的应用程序。我试图在WPF中实现一个选项卡控件。我已经开始研究这些tabitems及其各自的背景。但是,我注意到选项卡控件上只有两个tabitems,只用白色填充剩余空间。我有什么属性来改变这个空白区?感谢任何帮助,下面是参考图片以及我的xaml。

照片:

white space wpf tab control

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>

2 个答案:

答案 0 :(得分:5)

只需将TabControl包裹在所需颜色的边框处即可。将Margin属性放在此边框中:

<Border Margin="0,35,0,0" Background="DesiredColor">
  <TabControl Background="#1F1F1F">
    ...
  </TabControl>
</Border>

标题背景的白色(或更好的透明)颜色在TabControl的控件模板中得到修复。也可以改变它,但它更复杂。如果你只想获得视觉效果,我会建议这个解决方案。

答案 1 :(得分:0)

替代方案并不像看起来的那么复杂,我将提供答案,以防将来有人需要该信息;

您需要右键单击元素并编辑模板的副本,然后可以根据需要编辑此行,

<TabPanel x:Name="headerPanel" Background="COLOR"

默认情况下,背景颜色设置为透明,因此为什么在该对象后放置边框或任何其他面板也将起作用。