C# 复选框已选中&;伊斯穆塞弗

C# 复选框已选中&;伊斯穆塞弗,c#,wpf,checkbox,C#,Wpf,Checkbox,我最近做了一些控制设计,并想使用它们,但我发现有一个问题。通常,复选框有4个图像: 正常状态下 当鼠标滑过 检查完毕后 当它被选中,鼠标移到上面 但是第四个。国家不存在,我向你展示我到目前为止是如何做到的: <ControlTemplate x:Key="ModernCheckBox" TargetType="{x:Type CheckBox}"> <StackPanel Orientation="Horizontal">

我最近做了一些控制设计,并想使用它们,但我发现有一个问题。通常,复选框有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>
    
    
    
    到目前为止,我的模板工作得很好,但正如你所看到的,我找不到上一个状态的方法,所以我在这里寻求帮助

    亲切问候,

    杰克

    你需要使用a来对你的状态做出反应#4

    e、 g


    您可以使用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>
    

    或者您可以更改
    OptionMark.MouseOver.Glyph的
    静态资源
    ,以及
    OptionMark.Pressed.Glyph的
    静态资源

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