[英]How to disable mouse over effect visibility temporarily on button click?
为了简单起见,假设我的程序的按钮在“关闭”时为白色,在“开启”时为绿色。 当鼠标悬停在按钮上时,按钮的颜色变为浅蓝色。 当前,单击按钮时,按钮颜色将保持淡蓝色,直到鼠标不再悬停在按钮上为止,然后(当鼠标移开并且不再悬停在按钮上时)按钮的绿色或白色背景为显示。 悬停效果和按钮背景的代码当前为...
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="bdr" CornerRadius="22" Margin="3" BorderThickness="2.5" BorderBrush="Black" Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bdr" Property="Background" Value="#ABBEC9"/>
</Trigger>
单击事件后,我需要立即显示按钮新背景(即使鼠标仍悬停在按钮上)。 我在执行此操作时遇到了麻烦。
我已经尝试过下面的MultiDataTrigger,但是即使单击鼠标不再悬停在按钮上时,悬停颜色也仅在单击时闪烁为白色,并且不再显示背景色,因此代码显然是错误的。
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=bdr, Path=IsMouseOver}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter TargetName="bdr" Property="Background" Value="#ABBEC9" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=bdr, Path=IsMouseOver}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter TargetName="bdr" Property="Background" Value="White" />
</MultiDataTrigger>
任何帮助,将不胜感激。
您必须自己处理,可能需要最少的过程代码(例如,布尔属性)。
如果您想使事情保持简单,则可以用另一种方式显示状态,例如利用BorderBrush
显示Button
的Background
。
这是完整的模板:
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="bdr" CornerRadius="22" Margin="3" BorderThickness="2.5" BorderBrush="Black" Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bdr" Property="Background" Value="#ABBEC9"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bdr" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource AncestorType=Button},Path=Background}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.