如何通过关键帧触发Silverlight动画中的事件?

时间:2010-05-20 23:01:41

标签: silverlight events animation keyframe

当动画到达某个关键帧时,我需要调用一个方法。当动画到达某个关键帧时是否可以触发事件?如果没有,是否有更好的方法在某个时间触发事件?

1 个答案:

答案 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>