2014-02-27 46 views
0

所以设置不同的颜色为每个标签我在Window.Resources以下样式:使用相同的风格

<Style TargetType="TabItem" x:Key="tiS"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="TabItem"> 
        <Grid Height="40" Width="186"> 
         <Border Name="tiBorder" Background="Transparent"> 
          <ContentPresenter ContentSource="Header" 
               VerticalAlignment="Center" 
               HorizontalAlignment="Center" 
               TextBlock.FontSize="20"/> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Panel.ZIndex" Value="90"/> 
          <Setter TargetName="tiBorder" Property="Background" Value="{DynamicResource tiB}"/> 
          <!--<Setter TargetName="tiBorder" Property="Margin" Value="0,-4,0,-4"/>--> 
          <Setter TargetName="tiBorder" Property="BorderThickness" Value="0,0,0,1"/> 
          <Setter TargetName="tiBorder" Property="BorderBrush" Value="{StaticResource tiLineFade}"/> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="False"> 
          <Setter Property="Panel.ZIndex" Value="80"/> 
          <Setter TargetName="tiBorder" Property="BorderThickness" Value="0,0,0,1"/> 
          <Setter TargetName="tiBorder" Property="BorderBrush" Value="{StaticResource tiLineFade}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

这种风格上使用5周的TabItems,每个用“DynamicResource赋予不同的颜色tiB'在触发器中。

在我把下面的资源(COLOR1在Window.Resources设置)每次的TabItem:

<TabItem.Resources> 
    <SolidColorBrush x:Key="tiB" Color="{StaticResource Color1}"/> 
</TabItem.Resources> 

我想知道,有没有更简单的方式来做到这一点还是我这样做对吗?这是我第一次使用WPF中的样式,所以我想做正确的事。 (此代码正在寻找一个更好的(如果有的话)解决方案,以我的情况!)

下面是完整的代码:http://pastebin.com/igwxgp6M

+0

使用样式选择器应用颜色... – Sankarann

+0

我在样式选择器上进行了一次搜索,从我看到的是我必须使用其中的颜色制作不同的样式,并为每个tabitem使用正确的样式编写一些代码。我之所以这样做是因为我不需要编辑5种不同的样式,如果我想改变一些东西,但只有1个。 – Krowi

回答

0

我相信这会工作

<TabControl ...> 
    <TabControl.ItemsContainerStyle> 
     <Style TargetType="TabItem"> 
      //Put triggers here 
     </Style> 
    <TabControl.ItemsContainerStyle> 
</TabControl> 
+0

也许,但这并不会减少TabItems本身的代码,如果我想改变我必须编辑每个触发器的东西。现在我只需要改变一种风格。我可能很烦人,但我正在寻找确认,如果我的例子是正确的方式来做到这一点,我所做的是工作。 – Krowi