如何为多个目标对象使用故事板?

时间:2013-02-19 16:25:00

标签: c# wpf storyboard

我有一个c#类,我们称之为TwoButtonsHolder。在这堂课中,我有2 UIElements我想使用StoryBoards进行动画制作。我们称他们为ButtonAButtonB。因为我想让它们同时具有动画效果,所以我决定将所有动画放在一个Storyboard对象中(或者有更好的方法吗?)。所以现在我正在尝试在代码背后创建storyboard对象,但我陷入了必须定义目标属性的部分。通常,当我声明动画时,我使用这样的代码来设置属性

Storyboard.SetTargetProperty(myDoubleAnimation,
                             new PropertyPath(UIElement.OpacityProperty));

现在我在类型为TwoButtonsHolder的目标Object中有UIElement。如何创建故事板并将动画目标属性设置为TwoButtonsHolder.ButtonA.UIElement.OpacityProperty?这是一个糟糕的设计,使用单个故事板为多个对象设置动画,以便同时运行动画吗? (仅供参考,我想在代码中尝试这个,不想进入XAML,因为我发现它太复杂,难以学习恕我直言)。谢谢

编辑:只想添加2个按钮有不同的动画,我将它们放在同一个故事板中的唯一原因是让他们同时开始制作动画

1 个答案:

答案 0 :(得分:9)

在一个Storyboard中为多个对象设置动画绝对没有坏处。

你会以某种方式写它:

var animationA = new DoubleAnimation(...);
Storyboard.SetTarget(animationA, ButtonA);
Storyboard.SetTargetProperty(animationA, new PropertyPath(UIElement.OpacityProperty));

var animationB = new DoubleAnimation(...);
Storyboard.SetTarget(animationB, ButtonB);
Storyboard.SetTargetProperty(animationB, new PropertyPath(UIElement.OpacityProperty));

var storyboard = new Storyboard();
storyboard.Children.Add(animationA);
storyboard.Children.Add(animationB);
storyboard.Begin();