2012-02-16 20 views
2

最近、いくつかのコントロールデザインを作成して使いたいと思っていますが、問題があります。一般的にはチェックボックスは4つのイメージを持っていますCheckBox IsChecked&IsMouseOver

  1. すると、通常の状態
  2. ときにマウス
  3. それがチェックされ、マウス

の上にいたときに、それは

  • をチェックしています
  • しかし4.国家doesntのオーバー存在して、私はこれまでにどのように私はあなたを示しています:

     <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

    あなたは、例えば、あなたの状態#4

    に反応するためにMultiTriggerを使用する必要があります

    <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

    それとも、単にOptionMark.MouseOver.GlyphOptionMark.Pressed.Glyph

    ため StaticResourceため StaticResourceを変更することができます
    関連する問題