CheckBox IsChecked& IsMouseOver

时间:2012-02-16 23:30:59

标签: c# wpf checkbox

我最近制作了一些控制设计并希望使用它们,但我发现存在问题。通常,复选框有4个图像:

  1. 正常状态时
  2. 鼠标悬停时
  3. 检查时
  4. 当它被检查并且鼠标悬停在
  5. 上时

    但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>
    

    我的模板到目前为止运作良好,但是你可以看到我找不到最后一个状态,所以我在这里寻求帮助!

    亲切的问候,

    杰克

3 个答案:

答案 0 :(得分:7)

您需要使用MultiTrigger才能对您的州#4

做出反应

e.g。

<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 :(得分: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>

答案 2 :(得分:0)

或者您只需更改StaticResource的{​​{1}}和OptionMark.MouseOver.Glyph的{​​{1}}