2010-07-16 53 views
13

我設置的TabItem的背景顏色在XAML爲紅色,但是當我運行它,並在它懸停或選擇它,它變回了默認的灰色尋找TabItem的背景顏色的變化。只有在選中其他tabitem時它才能正確顯示。我如何始終保持紅色。謝謝!WPF - 當TabItem的選擇或將鼠標懸停在

回答

28

Here is example of TabItem ControlTemplate

它複製到你的資源和設置,無論你需要的紅色爲背景。

樣品

<Window x:Class="TestCustomTab.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <SolidColorBrush x:Key="RedBrush" Color="Red"/>  

     <SolidColorBrush x:Key="SolidBorderBrush" Color="#888" /> 

     <SolidColorBrush x:Key="GreenBrush" Color="Green" /> 

     <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />  

     <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> 
          <Border 
           Name="Border" 
           Margin="0,0,-4,0" 
           Background="{StaticResource RedBrush}" 
           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="Background" Value="{StaticResource GreenBrush}" /> 
           <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0" /> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="False"> 
           <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" /> 
           <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" /> 
           <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style>   
    </Window.Resources> 
    <Grid> 
     <TabControl> 
      <TabItem Header="MyTabItem" /> 
      <TabItem Header="MyTabItem" /> 
     </TabControl> 
    </Grid> 
</Window> 

創建測試WPF項目和粘貼示例代碼,而不是Window1.xaml代碼。

+0

你能告訴我一個簡單的例子。謝謝! – TCoder 2010-07-20 11:54:45

+0

檢查與樣本更新。 – 2010-07-20 12:08:45

+0

很棒!謝謝! – TCoder 2010-07-20 12:37:43