2012-02-16 62 views
2

我最近做了一些控制設計,並想使用它們,但我看到有一個問題。一般來說,複選框有4張圖片:CheckBox IsChecked&IsMouseOver

  1. 當正常狀態
  2. 當鼠標懸停
  3. 當它檢測
  4. 時,它的檢查,鼠標移到

不過4國犯規存在,我告訴你我到目前爲止做得如何:

 <ControlTemplate x:Key="ModernCheckBox" TargetType="{x:Type CheckBox}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image x:Name="_Image" Source="CheckBox_Normal.png" Margin="0,0,4,0"/> 
      <ContentControl Content="CheckBox"/> 
     </StackPanel> 
     <ControlTemplate.Triggers> 
      <Trigger Property="CheckBox.IsMouseOver" Value="True"> 
       <Setter TargetName="_Image" Property="Source" Value="CheckBox_NormalHover.png"/> 
      </Trigger> 
      <Trigger Property="CheckBox.IsChecked" Value="True"> 
       <Setter TargetName="_Image" Property="Source" Value="CheckBox_Checked.png"/> 
      </Trigger> 
      <Trigger Property="CheckBox.??" Value="True"> 
       <Setter TargetName="_Image" Property="Source" Value="CheckBox_CheckedHover.png"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 

我的模板到目前爲止工作得很好,但是因爲你可以看到我找不到最後的狀態,所以我在這裏尋求幫助!

親切的問候,

傑克

回答

6

你需要使用一個MultiTrigger,以你的狀態#4

例如反應

<MultiTrigger> 
    <MultiTrigger.Conditions> 
     <Condition Property="IsMouseOver" Value="True"/> 
     <Condition Property="IsChecked" Value="True"/> 
    </MultiTrigger.Conditions> 
    <Setter TargetName="_Image" Property="Source" Value="CheckBox_CheckedHover.png"/> 
</MultiTrigger> 
1

可以使用MultiTrigger測試多個屬性值:

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Property="CheckBox.IsMouseOver" Value="True" /> 
     <Condition Property="CheckBox.IsChecked" Value="True" /> 
    </MultiDataTrigger.Conditions> 
    <Setter TargetName="_Image" Property="Source" Value="CheckBox_CheckedHover.png"/>  
</MultiDataTrigger> 
0

或者你可以只改變StaticResourceOptionMark.MouseOver.GlyphStaticResourceOptionMark.Pressed.Glyph