【发布时间】:2020-01-08 02:09:25
【问题描述】:
我有一个简单的按钮。我有两个触发器,当鼠标悬停在按钮上或单击按钮时,每个触发器都会淡化按钮的颜色。它最初可以工作,但是一旦单击按钮,样式的 IsMouseOver 部分就会停止工作。只有IsPressed 才有效。样式定义为:
<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. 我已经尝试过这些,但他们要么没有解决问题,要么让问题变得更糟。我也尝试过切换顺序。它不能解决问题。
【问题讨论】: