2014-12-03 6 views
1

나는 몇 개의 TabItem이있는 TabControl을 가지고있다. 각 TabItem에는 투명 영역이있는 TextBlock과 Image가있는 Grid가 있습니다.WPF TabItem Headers 'Background를 투명하게 만드는 방법?

제 목표는 텍스트와 이미지를 완전히 볼 수있게하고 투명 영역을 통해 Window.Background Image를 보는 것입니다.

문제점 : 내가 시도한 것에 상관없이, 내가 설정 한 Image 및 TextBlock 뒤에 흰색 배경이 있습니다.

TabControl 불투명도를 0으로 설정하려고 시도했지만 예상대로 모든 것이 사라집니다. TabItem Opacity -> TabItem과 동일한 결과가 표시되지 않습니다. 다음으로 TabItems Foreground, BorderBrush 및 Background를 전혀 변경하지 않은 Opacity = "0"으로 설정합니다. (

저는 WPF에 비교적 익숙하지 않고 영어가 제 모국어가 아니므로 내 질문이 바보 인 경우 용서해주십시오. 내 영어는 나쁜

감사합니다 사전에

EDIT (Screenshotlink) :.! 내가 10 평판이 없기 때문에 http://i.stack.imgur.com/NN8AR.png


내가, 스크린 샷을 게시 할 수 없습니다, 그래서 링크를 추가 그것에.
나는 제거한다 d 이미지를 남기고 텍스트 상자 만 남겨 두어 그 부분에 혼란이 없어야합니다.

+0

일부 스크린 샷을 업로드하고 어떤 부분을 투명하게 표시 할 수 있습니까? – Bolu

+0

스크린 샷 – 1stkeks

답변

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> 

당신은 아마 (에 isSelected의 트리거에서) TabItem의이 선택되어 무엇을 보여주고 그것을 조금 수정해야합니다 .

+0

매력처럼 작동했습니다! 대단히 감사합니다. – 1stkeks