CheckBox IsChecked和IsMouseOver

Jak*_*t77 3 c# wpf checkbox

我最近制作了一些控制设计并希望使用它们,但我发现存在问题.通常,Checkbox有4张图片:

  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>
Run Code Online (Sandbox Code Playgroud)

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

亲切的问候,

可靠的人

Ter*_*kel 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>
Run Code Online (Sandbox Code Playgroud)