当动画到达某个关键帧时,我需要调用一个方法。当动画到达某个关键帧时是否可以触发事件?如果没有,是否有更好的方法在某个时间触发事件?
答案 0 :(得分:5)
Silverlight时间表在事件方面非常有限。据我所知,只支持Completed事件。你可以做的是在一个故事板中有两个时间轴,第二个时间轴正在更新你可以看到的绑定属性。
可能是这样的:
<Storyboard>
<DoubleAnimationusingKeyFrames ... />
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="TriggerEvent">
<ObjectKeyFrame KeyTime="00:00:01" Value="True" />
<ObjectAnimationUsingKeyFrames>
</Storyboard>
然后在控件的代码后面,定义一个名为TriggerEvent的依赖属性,类型为Boolean。当它变为true时,请调用您的方法。
另一个选项,实际上可能更好,就是将原始动画拆分为两个平行的时间轴,并将一个Completed事件处理程序连接到第一个时间轴(您用来调用它)你的方法)然后在第二个时间轴上,使用BeginTime属性来同步这两个动画,这样第二个动画就会在第一个完成时获取。
<Storyboard>
<!-- Timeline 1 -->
<DoubleAnimationusingKeyFrames Completed="MyCompletedHandler" ... />
<!-- Timeline 2 -->
<DoubleAnimationUsingKeyFrames BeginTime="00:00:01" ... />
</Storyboard>