2014-12-03 5 views
1

У меня есть TabControl с несколькими TabItems. Каждый TabItem имеет сетку с TextBlock и одно изображение, в котором есть прозрачные области.Как сделать WPF TabItem Headers 'Background прозрачным?

Моя цель - полностью увидеть текст и изображение и увидеть окно.

Проблема: Независимо от того, что я пробовал, есть белый фон за Image и TextBlock, который я установил.

Я попытался установить непрозрачность TabControl на 0, но это заставляет все исчезнуть, как и ожидалось. Тот же результат с непрозрачностью TabItem -> TabItem становится невидимым. Далее я установил TabItems Foreground, BorderBrush и Background to Opacity = «0», что ничего не меняет :(

Я относительно новичок в WPF, а английский - не мой родной язык, так что простите меня, если мой вопрос немой и мой английский плохо

заранее спасибо

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


Я не могу отправить скриншот, потому что я не имею 10 репутации, поэтому я добавил ссылку к нему.
Я удаляю 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> 

Вы, вероятно, нужно изменить его немного, чтобы показать, что выбран TabItem (в Trigger на IsSelected) ,

+0

Это сработало как шарм! спасибо. – 1stkeks