2009-08-05 77 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