2016-11-19 159 views
0

我试图使标签相同的颜色,无论无论是选择与否,我已触发并设置颜色,但它不似乎工作:更改所选标签的颜色WPF C#

<Window.Resources> 
    <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#424E5A"/> 
    <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#424E5A"/> 
    <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}"> 
     <Setter Property="Padding" Value="2"/> 
     <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     <Setter Property="VerticalContentAlignment" Value="Center"/> 
     <Setter Property="Background" Value="{StaticResource TabItem.Selected.Background}"/> 
     <Setter Property="BorderBrush" Value="{StaticResource TabItem.Selected.Border}"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabControl}"> 
        <Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition x:Name="ColumnDefinition0"/> 
          <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition x:Name="RowDefinition0" Height="Auto"/> 
          <RowDefinition x:Name="RowDefinition1" Height="*"/> 
         </Grid.RowDefinitions> 
         <TabPanel x:Name="headerPanel" Background="#424E5A" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> 
         <Border x:Name="contentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local"> 
          <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="TabStripPlacement" Value="Bottom"> 
          <Setter Property="Grid.Row" TargetName="headerPanel" Value="1"/> 
          <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
          <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
          <Setter Property="Height" TargetName="RowDefinition1" Value="Auto"/> 
          <Setter Property="Margin" TargetName="headerPanel" Value="2,0,2,2"/> 
         </Trigger> 
         <Trigger Property="TabStripPlacement" Value="Left"> 
          <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/> 
          <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
          <Setter Property="Grid.Column" TargetName="headerPanel" Value="0"/> 
          <Setter Property="Grid.Column" TargetName="contentPanel" Value="1"/> 
          <Setter Property="Width" TargetName="ColumnDefinition0" Value="Auto"/> 
          <Setter Property="Width" TargetName="ColumnDefinition1" Value="*"/> 
          <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
          <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> 
          <Setter Property="Margin" TargetName="headerPanel" Value="2,2,0,2"/> 
         </Trigger> 
         <Trigger Property="TabStripPlacement" Value="Right"> 
          <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/> 
          <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
          <Setter Property="Grid.Column" TargetName="headerPanel" Value="1"/> 
          <Setter Property="Grid.Column" TargetName="contentPanel" Value="0"/> 
          <Setter Property="Width" TargetName="ColumnDefinition0" Value="*"/> 
          <Setter Property="Width" TargetName="ColumnDefinition1" Value="Auto"/> 
          <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
          <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> 
          <Setter Property="Margin" TargetName="headerPanel" Value="0,2,2,2"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="templateRoot" Property="Background" Value="#424E5A" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

但正如你所看到的颜色是白色,而不是blueygrey我的标签栏的其余部分是:

image 我该如何解决这样的颜色总是#424E5A

回答

0

我觉得你接近,你是ju st缺少标题是在TabItem中定义的,而不是在TabControl中定义的。

因此,您正在寻找另一种添加风格,除此之外,您已经拥有。例如:

<Style x:Key="TabItemStyle1" TargetType="{x:Type TabItem}"> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Border x:Name="grid" Background="{StaticResource TabItem.Selected.Background}"> 
        <ContentPresenter> 
         <ContentPresenter.Content> 
          <TextBlock Margin="4" FontSize="15" Text="{TemplateBinding Content}"/> 
         </ContentPresenter.Content> 
        </ContentPresenter> 
       </Border> 
       <DataTemplate.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type TabItem}},Path=IsSelected}" Value="True"> 
         <Setter TargetName="grid" Property="Background" Value="{StaticResource TabItem.Selected.Background}"/> 
        </DataTrigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 

希望它有帮助。