2014-12-03 154 views
1

我有一个TabControl与几个TabItems。每个TabItem都有一个带有TextBlock的网格和一个具有透明区域的图像。如何使WPF TabItem标题的背景透明?

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

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

我试图设置TabControl不透明度为0,但这使整个事情消失,如预期。 与TabItem不透明度相同的结果 - > TabItem不可见。 Next我设置TabItems前景,BorderBrush和背景为不透明度=“0”什么都没有改变:(

我对WPF比较新,英文不是我的母语,所以请原谅我,如果我的问题是愚蠢的而我的英语不好提前

感谢

EDIT(Screenshotlink):!http://i.stack.imgur.com/NN8AR.png


我不能发布的截图,因为我没有10的声誉,所以我增加了链接去它
我删除d的图像,只留下文本框,所以不会有任何混淆

+0

你可以上传一些截图,并显示你想要透明的部分。 – Bolu 2014-12-03 10:39:05

+0

增加了一个截图 – 1stkeks 2014-12-03 10:51:03

回答

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) 。

+0

这就像一个魅力! 非常感谢。 – 1stkeks 2014-12-04 06:58:42