2016-08-12 63 views
1

我有TabControl元素。如何更改標籤頁眉的邊框顏色?

Tab style

我改變TabControlBorderBrush到紅色,如圖所示。 讓我生氣的是我的標籤本身不能有相同的顏色。

我嘗試了很多例子,如WPF TabItem Header Styling,但沒有喜悅。 我想更改的邊框不是Header元素的一部分。 Header元素是我想改變的東西。

我試圖從https://msdn.microsoft.com/en-us/library/ms754137(v=vs.110).aspx使用完整的模板,沒有喜悅,看起來很蠢,我不知道如何開始讓它看起來應該看起來如何。

我在哪裏可以獲得原始模板進行修改?我只是想改變邊框顏色,沒有別的。我不介意粘貼和編輯一個巨大的模板,但我需要正確的,實際的模板。

(我使用的.NET Framework 4.6.2。)

+0

我認爲混合允許您創建原始模板修改的副本。 – Joey

回答

1

在XAML設計模式下,右鍵點擊你的TabControl,並從上下文菜單中選擇編輯模板 | 編輯副本...。這將爲您提供真正在那裏使用的實際模板(至少XAML Designer在設計時知道),而不是MSDN中的一些cheeseball示例。

至於編輯該模板一旦你得到它...那不殺你的你讓你更強。通常。

enter image description here

+0

非常感謝陌生人! – Harry

1

下面是從混合的TabItemStyle。

你想要的行是最接近開始的mainBorder。您可以看到您選擇的邊框筆刷正在應用,但邊框厚度無法真正顯示。我將它改爲2,2,2,0,並在tabitem周圍出現紅色邊框。

Tab Item Preview

<Style x:Key="TabItemStyle1" TargetType="{x:Type TabItem}"> 
     <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> 
     <Setter Property="Foreground" Value="Black"/> 
     <Setter Property="Background" Value="{StaticResource TabItem.Static.Background}"/> 
     <Setter Property="BorderBrush" Value="{StaticResource TabItem.Static.Border}"/> 
     <Setter Property="Margin" Value="0"/> 
     <Setter Property="Padding" Value="6,2,6,2"/> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> 
         <Border x:Name="mainBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="2,2,2,0" Background="{TemplateBinding Background}" Margin="0"> 
          <Border x:Name="innerBorder" BorderBrush="{StaticResource TabItem.Selected.Border}" BorderThickness="1,1,1,0" Background="{StaticResource TabItem.Selected.Background}" Margin="-1" Opacity="0"/> 
         </Border> 
         <ContentPresenter x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/> 
          <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/> 
          <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Panel.ZIndex" Value="1"/> 
          <Setter Property="Margin" Value="-2,-2,0,-2"/> 
          <Setter Property="Opacity" TargetName="innerBorder" Value="1"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Panel.ZIndex" Value="1"/> 
          <Setter Property="Margin" Value="-2,0,-2,-2"/> 
          <Setter Property="Opacity" TargetName="innerBorder" Value="1"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Panel.ZIndex" Value="1"/> 
          <Setter Property="Margin" Value="0,-2,-2,-2"/> 
          <Setter Property="Opacity" TargetName="innerBorder" Value="1"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/> 
         </MultiDataTrigger> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/> 
           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Panel.ZIndex" Value="1"/> 
          <Setter Property="Margin" Value="-2,-2,-2,0"/> 
          <Setter Property="Opacity" TargetName="innerBorder" Value="1"/> 
          <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/> 
          <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/> 
         </MultiDataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>