2012-05-14 39 views
1

我正在嘗試爲Wpf中的選項卡控件實施HotTracking。我的理解是這不包括在wpf tabcontrol中,我想使用它。設置選項卡控件的HotTracking

爲了我HotTracking =當鼠標懸停未選中選項卡(選擇之間,而不是選擇一般的東西)

我用了一下我自己的知識和這個職位How to set MouseOver event/trigger for border in XAML?但該選項卡會改變顏色,我不能似乎使它工作。

這就是一切。

<Window x:Class="TestingWpF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="1024" Width="1280"> 
<Window.Resources> 
    <Style TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid> 
         <Border 
          Name="Border" 
          CornerRadius="6,6,0,0" > 
          <ContentPresenter x:Name="ContentSite" 
          VerticalAlignment="Center" 
          HorizontalAlignment="Center" 
          ContentSource="Header" 
          Margin="12,2,12,2"/> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="Border" Property="Background" Value="LightBlue" /> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="False"> 
          <Setter TargetName="Border" Property="Background" Value="AliceBlue" /> 
         </Trigger> 
         <Trigger Property=" Border.IsMouseOver" Value="True"> 
          <Setter Property="Border.Background" Value="Green" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 


<Grid> 
    <TabControl Grid.ColumnSpan="2" Grid.RowSpan="2" Height="309" HorizontalAlignment="Left" Name="tabControl1" VerticalAlignment="Top" Width="781" Padding="0"> 
     <TabItem Header="tabItem1" > 

     </TabItem> 
     <TabItem Header="tabItem2" > 

      </TabItem> 
    </TabControl> 
    </Grid> 
</Window> 

回答

2

我想通了,我的問題是這部分

<Trigger Property="IsSelected" Value="True"> 
    <Setter TargetName="Border" Property="Background" Value="LightBlue" /> 
</Trigger> 
<Trigger Property="IsSelected" Value="False"> 
    <Setter TargetName="Border" Property="Background" Value="AliceBlue" /> 
</Trigger> 
<Trigger Property=" Border.IsMouseOver" Value="True"> 
//Change this line 
//<Setter Property="Border.Background" Value="Green" />  
//To This 
    <Setter TargetName="Border" Property="Background" Value="Green" /> 
</Trigger> 

最後的導火索是一個不工作。如果你注意到我在setter中使用了不同的屬性。我改變了它,以匹配其他兩個,它的工作

+0

看起來像什麼是在我原來的代碼示例。 – Paparazzi

+0

@Blam我沒有修改答案中的代碼,我只是解釋在哪裏看。我會改變它,以避免混淆。 –

+0

不錯,但我更喜歡像這樣設置BorderBrush:以避免背景閃爍,同時移動鼠標 –