复选框的IsChecked和IsMouseOver属性

3

我最近设计了一些控件并想要使用它们,但我发现有一个问题。通常,复选框有四个图像:

  1. 正常状态
  2. 鼠标悬停时
  3. 选中时
  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>

我的模板目前运作良好,但是正如您所看到的,我找不到最后一个状态的方法,因此在这里寻求帮助!

谢谢,

Jake

3个回答

7
您需要使用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

或者你可以直接更改 OptionMark.MouseOver.GlyphStaticResourceOptionMark.Pressed.GlyphStaticResource


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接