2009-08-05 110 views
7

我有一堆WPF用户控件,内部触发用户交互时的一些动画。所有动画都有repeatbehavior =“true”,所有动画的持续时间相同。现在我想在一个时间线上同步所有这些动画,以便它们同步淡入淡出。无论用户何时触发动画。例如,如果动画全部持续3秒,并且用户在第一个动画之后1.5秒后触发第二个动画,我仍然希望动画同时达到其最大值。 也许我可以在全局资源字典中定义一个全局时间线,在UserControls中某处定义的所有动画都可以使用该全局时间线?最好只使用XAML。共享相同时间轴的多个故事板或动画?

回答

0

只需将所有动画添加到单个TimelineCollection即可。然后将该TimelineCollection添加到您的Storyboard.Children。然后他们都会同时开火。

+0

AS I表示动画是在我的用户控件中定义的。我不认为有一种方法可以将在不同用户控件中定义的动画添加到同一时间轴上。或者,也许有? – bitbonk 2009-08-06 09:52:46

0

XAML:不可能(据我所知)

代码:CompositionTarget.Rendering

+1

您能否详细说明我将如何使用CompositionTarget.Rendering事件与我的动画定义? – bitbonk 2009-08-21 09:05:52

+0

您必须将动画移至代码。在渲染事件中,检查应该运行哪些动画并基于单个计时器变量手动更新相应的属性。这不是很多工作,只是SomeElement.SomeProperty = baseValue + rate * timePassed的几行; – ima 2009-08-25 13:37:15