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

Edw*_*ard 4 silverlight events animation keyframe

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

Jos*_*osh 5

Silverlight时间表在事件方面非常有限.据我所知,只支持Completed事件.您可以做的是在单个故事板中有两个时间轴,其中第二个时间轴正在更新您可以观看的绑定属性.

也许是这样的:

<Storyboard>
    <DoubleAnimationusingKeyFrames ... />
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="TriggerEvent">
        <ObjectKeyFrame KeyTime="00:00:01" Value="True" />
    <ObjectAnimationUsingKeyFrames>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)

然后在控件的代码后面,定义一个名为TriggerEvent的依赖属性,类型为Boolean.当它变为true时,请调用您的方法.

然而,实际上可能更好的另一个选择是将原始动画分成两个平行的时间轴,并将Completed事件处理程序连接到第一个时间轴(用于调用方法),然后在第二个时间轴上,使用BeginTime属性用于同步两个动画,以便第二个动画在第一个动画完成时拾取.

<Storyboard>
    <!-- Timeline 1 -->
    <DoubleAnimationusingKeyFrames Completed="MyCompletedHandler" ... />
    <!-- Timeline 2 -->
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:01" ... />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)