如何制作WPF TabItem标题'背景透明?

时间:2014-12-03 10:26:57

标签: c# wpf header tabcontrol tabitem

我有一个带有几个TabItem的TabControl。每个TabItem都有一个带有TextBlock的Grid和一个带有透明区域的Image。

我的目标是让文本和图像完全可见,并通过透明区域查看Window.Background图像。

问题:无论我尝试了什么,我设置的Image和TextBlock背后都有白色背景。

我试图将TabControl Opacity设置为0,但这会让整个事情像预期的那样消失。 与TabItem不透明度相同的结果 - > TabItem变得不可见。 接下来我将TabItems Foreground,BorderBrush和Background设置为Opacity =“0”,什么都没有改变:(

我对WPF比较陌生,英语不是我的母语,所以请原谅我,如果我的问题愚蠢,我的英语不好。

提前致谢!

编辑(Screenshotlink):http://i.stack.imgur.com/NN8AR.png


我无法发布截图,因为我没有10个声望,所以我添加了链接。 我删除了图像,只留下了文本框,所以没有混淆

1 个答案:

答案 0 :(得分:2)

您需要制作一个自定义TabItem ControlTemplate才能这样做。

这是一个稍微修改过的TabItem ControlTemplate(稍微修改一下default):

<SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />

<SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />

<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" />

<Style TargetType="{x:Type TabItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabItem}">
                <Grid Background="Transparent">
                    <Border 
                            Name="Border"
                            Margin="0,0,-4,0" 
                            Background="Transparent"
                            BorderBrush="{StaticResource SolidBorderBrush}" 
                            BorderThickness="1,1,1,1" 
                            CornerRadius="2,12,0,0" >
                        <ContentPresenter x:Name="ContentSite"
                              VerticalAlignment="Center"
                              HorizontalAlignment="Center"
                              ContentSource="Header"
                              Margin="12,2,12,2"
                              RecognizesAccessKey="True"/>
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="Panel.ZIndex" Value="100" />
                        <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" />
                        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

您可能需要稍微修改它以显示选择的TabItem(在IsSelected上的触发器中)。