2014-02-27 79 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