2013-08-27 241 views
3

我正在爲WPF中的對話框實現TabControl。默認情況下,選定選項卡的顏色(鼠標向下)爲白色。我想將選定選項卡的顏色更改爲懸停顏色(當我將鼠標懸停在選項卡上時,選項卡的顏色更改爲Office藍色漸變,這是我希望選定選項卡的顏色爲在鼠標點擊)。如何更改TabControl中選定選項卡的顏色?

我該怎麼做?

這段代碼不起作用:

<Style x:Key="StyleTabControl" TargetType="{x:Type TabItem}"> 
    <Setter Property="Background" Value="#FFFDFDFD"/> 
    <Style.Triggers> 
     <Trigger Property="IsSelected " Value="True"> 
      <Setter Property="Background" Value="SlateGray"></Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

注:我也嘗試IsMouseCaptured事件觸發屬性。仍然不起作用。

+0

您可以創建一個CSS類,這和設置成任何你想要的鼠標按下屬性...或者你可以去到默認的CSS你已經加載了你的網站並在那裏修改它。第一種方法通常更好,除非您希望整個網站的行爲如此。 –

+4

WPF中的CSS?我想你沒有讀過這個問題 – paqogomez

+1

顯示一些代碼,你試過了。免得你得到一個CSS答案 – Shoe

回答

8

好吧......經過數小時的嘗試,我意識到TabItem選擇行爲是在模板級定義的。所以,如果我瓦納改變BACKGRND顏色,我這樣做:

<Window.Resources> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabItem}"> 
         <Border> 
          <Grid> 
           <Grid> 
            <Border x:Name="border" 
              CornerRadius="3,3,0,0" 
              Background="WhiteSmoke"/> 
           </Grid> 
            <ContentPresenter ContentSource="Header" 
                 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                 VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
          </Grid> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" 
            Value="True"> 
           <Setter TargetName="border" 
             Property="Background" 
             Value="LightGray" /> 
          </Trigger> 
          <Trigger Property="IsSelected" 
            Value="True"> 
           <Setter TargetName="border" 
             Property="Background" 
             Value="LightGray" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
相關問題