我想让所有按钮在点击时闪烁5秒钟。
我尝试通过适用于所有按钮的样式来实现(当我在xaml中声明按钮时,是否需要引用样式或者样式是否自动应用于所有按钮?)
< / LI>我可以改变Foreground
颜色,但我想要的是按钮文本背后的背景会改变颜色而不是文本本身。
我目前有一个ColorAnimation
,但我希望按钮背景在两种颜色之间交替闪烁,我不希望显示整个色谱。
到目前为止,我有以下代码。有人可以帮我正确的方向吗?
修改
如果为按钮背景设置动画更难以制作动画,那么我可以轻松地使用前景动画。
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard BeginTime="00:00:00"
RepeatBehavior="Forever"
Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
<ColorAnimation From="Black" To="Red" Duration="0:0:5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
答案 0 :(得分:4)
1.是否将样式应用于所有按钮
2.Animate backgrouund Storyboard.TargetProperty =“(Button.Background)。(SolidColorBrush.Color)”。确保默认样式不会覆盖您的动画样式。 ref stackoverflow
3.也许可以同时运行2个不透明动画。一个从透明到黑色,另一个从红色到透明的同时。这只是一个想法,没试过...... 1.列出项目
修改强>
我尝试了这段代码并且有效。关键是禁用默认样式宽度OverridesDefaultStyle =“False”
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue"></Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard BeginTime="00:00:00"
RepeatBehavior="Forever"
AutoReverse="True"
Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)">
<ColorAnimation From="Black" To="Red" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Button Width="100" Height="35" OverridesDefaultStyle="False" Focusable="False">dfdfdf</Button>
修改强>
同时添加Focusable =“False”以显示黑色到红色。按照你喜欢的方式改变时间。
答案 1 :(得分:2)
您可以尝试以下方法。我不认为这很漂亮,但符合你的要求而不会褪色:
expect(hash).to match({mytime: be_near_time_now_db_string}) # you need to write your own matcher for this to work.
只需根据需要更改 <Style TargetType="{x:Type Button}">
<Style.Resources>
<Storyboard x:Key="Storyboard" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
<ColorAnimationUsingKeyFrames Duration="0:0:5" >
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="Black"></DiscreteColorKeyFrame>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="Red"></DiscreteColorKeyFrame>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="Black"></DiscreteColorKeyFrame>
<DiscreteColorKeyFrame KeyTime="0:0:4" Value="Red"></DiscreteColorKeyFrame>
<DiscreteColorKeyFrame KeyTime="0:0:5" Value="Black"></DiscreteColorKeyFrame>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Style.Resources>
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginStoryboard Name="flash" Storyboard="{StaticResource Storyboard}"/>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
中的颜色
答案 2 :(得分:-1)
我似乎一般都有改变按钮背景颜色的问题,这似乎是一个广泛分享的问题。我提出了以下解决方案,也可以。它通过Opacity
定位DoubleAnimation
并且非常灵活。
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.4" RepeatBehavior="30x"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>