我有几个类似切换的按钮,我想在处于按下状态时齐声搏动。
我已经定义了一个带有触发器的样式,该触发器可以启动发光动画,除了每个按钮与其他按钮异步脉动之外,这种方式也很好用。
如何让每个按钮与其他按钮同步?
这是风格:
<Storyboard x:Key="pulseStory">
<ColorAnimation
Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
From="Red"
To="Transparent"
Duration="0:0:1" />
</Storyboard>
<Style x:Key="pulseButton" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Tag,RelativeSource={RelativeSource Self}}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource pulseStory}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
干杯!
答案 0 :(得分:4)
好的......我会抓住这个......
WPF框架没有任何工具来同步同时运行的动画,因此您将不得不想出一个不同的方法。一个想法让人想起......
在故事板中为隐藏UI元素的一些Color属性设置动画,然后使用UI绑定(即ElementName绑定)将每个按钮的Color连接到此隐藏的UI元素。
答案 1 :(得分:1)
实际上你应该通过一个资源来做这件事,至少使用一个隐藏的控件对我个人来说有点过分了。
工作需要满足的要求:
<DoubleAnimation
Storyboard.Target="{StaticResource AnimationValue}"
Storyboard.TargetProperty="(local:WrappedValue.Value)"
To="0" Duration="0:0:1"/>
嗯,不可否认的是,为此设置Wrapper类也有点hacky但它比完全控件更清晰(如果你想使用控件你可以使用一些未使用的Tag
- 属性,例如托管所有控件的容器)