2011-10-25 26 views
1

我想爲我的TabControl有一個MultiDataTrigger。當標籤懸停時,它應該改變顏色。但如果選擇了Tab,則不會。我嘗試了一個MultiDataTrigger。但它似乎並不奏效。這是我的風格:MultiDataTrigger不起作用?

<Style TargetType="{x:Type TabItem}"> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type TabItem}"> 
      <Grid> 
       <Border Name="Border" BorderBrush="Black" BorderThickness="0.5,0.5,0.5,0" CornerRadius="4,4,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"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
           <GradientStop Color="#fefeff" Offset="0" /> 
           <GradientStop Color="#e7edf6" Offset="1" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="IsSelected" Value="False"> 
        <Setter TargetName="Border" Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
           <GradientStop Color="#c5d0df" Offset="0" /> 
           <GradientStop Color="#aab4c2" Offset="1" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding Path=IsMouseOver}" Value="True" /> 
         <Condition Binding="{Binding Path=IsSelected}" Value="False" /> 
        </MultiDataTrigger.Conditions> 
        <Setter TargetName="Border" Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
           <GradientStop Color="#dde6f2" Offset="0" /> 
           <GradientStop Color="#c6d0de" Offset="1" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </MultiDataTrigger> 

      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

有什麼錯嗎?

回答

1

DataTriggers使用DataContext作爲源。我確信IsMouseOverIsSelected不是來自您的數據上下文的屬性,它們是選項卡項目的屬性。

我建議使用正常的MultiTrigger與正常的TriggerCondition它在裏面。

+0

完美的作品!謝謝! –

4

更改您的觸發是:

<MultiTrigger.Conditions> 
    <Condition Property="IsSelected" Value="false"/> 
    <Condition Property="IsMouseOver" Value="true"/> 
</MultiTrigger.Conditions> 

按照AngelWPF's回答一個DataTrigger將嘗試綁定到當前的DataContext,它會發現什麼匹配的屬性。

+0

這就是我做到的方式;) –

+0

@Anonymous你正在使用MultiDataTriggers,而不是MultiTriggers –

+0

不再是;)----- –