我最近做了一些控制设计,并想使用它们,但我看到了一个问题。通常,复选框有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>到目前为止,我的模板工作得很好,但是正如你所看到的,我没有找到最后一个状态的方法,所以我在这里寻求帮助!
亲切的问候,
杰克
发布于 2012-02-16 23:34:57
您需要使用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>发布于 2012-02-16 23:37:48
可以使用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>发布于 2016-04-09 09:48:07
或者您只需更改StaticResource for OptionMark.MouseOver.Glyph和StaticResource for OptionMark.Pressed.Glyph即可。
https://stackoverflow.com/questions/9320737
复制相似问题