.net - 多个触发器在 WPF XAML 中不起作用
问题描述
我有一个简单的按钮。我有两个触发器,当鼠标悬停在按钮上或单击按钮时,每个触发器都会淡化按钮的颜色。它最初可以工作,但是一旦单击按钮,IsMouseOver
样式的一部分就会停止工作。只有IsPressed
then 有效。样式定义为:
<Style TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border
Background="{TemplateBinding Background}"
BorderBrush="Silver"
BorderThickness="0.5"
CornerRadius="0">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="White"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="#FF272727"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="DarkSlateGray"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="#FF272727"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
按钮被简单地定义为<Button Margin="100,20,100,20" Background="#FF272727" Foreground="Silver">Write to index</Button>
我查看了其他一些答案,但他们使用了MultiTrigger, and MultiDataTrigger.
我已经尝试过的答案,但他们要么没有解决问题,要么让问题变得更糟。我也尝试过切换顺序。它不能解决问题。
解决方案
IsPressed 触发器的退出操作是强制颜色并覆盖悬停触发器。
将 IsPressed Exit 操作的 To 值更改为:
To="{x:Null}"
这将恢复为默认颜色(按钮本身的颜色)并允许悬停再次更改它。
推荐阅读
- ibm-midrange - AS400 物理文件记录上次更新时间戳
- javascript - 动态要求和取消要求文件
- angular - NullInjectorError:没有 HubService 的提供者
- c# - 选择后 DataGridViewComboBoxCell 显示 Value 成员而不是 Display 成员
- python - Python Pandas Groupby isin
- ios - XIB 视图未以正确的布局显示 [iOS Swift]
- angularjs - Angular js中的迭代
- mongodb - 如何访问 MongoDB 中仅设置为 null 但未设置为未定义的数据(在某些字段中)?解决了 Compass 中的一个错误
- javascript - 为什么我无法获取此元素的文本
- vue.js - 从外部 javascript 访问 Vue 组件范围