首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使WPF TabItem头的背景透明?

如何使WPF TabItem头的背景透明?
EN

Stack Overflow用户
提问于 2014-12-03 10:26:56
回答 1查看 3.1K关注 0票数 0

我有一个TabControl和一些TabItems。每个TabItem都有一个具有TextBlock和一个图像的网格,其中包含透明的区域。

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

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

我试图将TabControl不透明设置为0,但这使整个事情不透明,正如预期的那样。TabItem不透明-> TabItem的结果是不可见的。接下来,我将TabItems前台、BorderBrush和背景设置为Opacity="0“--什么都不改变:(

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

提前感谢!

编辑(屏幕链接):http://i.stack.imgur.com/NN8AR.png

我不能张贴截图,因为我没有10个声誉,所以我增加了链接到它。

代码语言:javascript
运行
复制
I removed the images and only left the Textboxes so there is no confusion about that
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 16:34:45

要做到这一点,您需要定制一个TabItem ControlTemplate。

下面是一个稍微修改过的TabItem ControlTemplate (从默认设置稍微修改一下)

代码语言:javascript
运行
复制
<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上的触发器中)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27269217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档