我有2个触发事件,包括<Trigger.EnterActions>
和<Trigger.ExitActions>
,这些事件是IsPressed
和IsMouseOver
。
当我点击一个按钮时,它将播放<Trigger Property="IsPressed" Value="True">
storyboard:
<Trigger Property="IsPressed" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource MouseDownTimeLine}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource MouseUpTimeLine}"/>
</Trigger.ExitActions>
</Trigger>
这与这个故事板有关:
<Storyboard x:Key="MouseDownTimeLine" >
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Pressed" Storyboard.TargetProperty="Opacity" >
<SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="MouseUpTimeLine">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Pressed" Storyboard.TargetProperty="Opacity" >
<SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
另一个按钮也链接到同一个Storyboard。当单击第二个按钮时,我希望它像它一样播放故事板,但是然后第一个按钮返回到正常状态。这是故事板的这一部分。
<Storyboard x:Key="MouseExitTimeLine">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Normal" Storyboard.TargetProperty="Opacity" >
<SplineDoubleKeyFrame KeyTime="00:00:00.00" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Hover" Storyboard.TargetProperty="Opacity" >
<SplineDoubleKeyFrame KeyTime="00:00:00.00" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
单击第二个按钮时,如何触发第一个按钮重置为正常
答案 0 :(得分:1)
也许我在这里错了,但似乎你将单选按钮功能融入了按钮模板。当您单击按钮时,它会保持“单击”(或选中),当您单击另一个按钮时,它会从第一个按钮“释放”该单击。
我将模板的目标类型更改为RadioButton
,并将触发器更改为:
<Trigger Property="IsChecked" Value="True">
<Trigger.EnterActions>
<BeginStoryboard x:Name="ButtonCheckedStoryboardBegin"
Storyboard="{StaticResource MouseDownTimeLine}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="ButtonCheckedStoryboardBegin"/>
</Trigger.ExitActions>
</Trigger>
使用StopStoryboard
因为MouseExitTimeLine中的duratios为零。如果您确实需要退出动画的持续时间,请使用:
<Trigger Property="IsChecked" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource MouseDownTimeLine}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource MouseExitTimeLine}"/>
</Trigger.ExitActions>
</Trigger>
[第二个选项可以按原样使用 - 持续时间为零,但不太优雅,IMO]
此外,MouseExitTimeLine中“Hover”的动画是多余的,可以删除,因为MouseDownTimeLine没有在“Hover”上设置任何内容。
现在,在布局中RadioButton
的每个实例上添加GroupName="<Some string here>"
。在任何给定的时间点,只能检查组中的一个单选按钮。