如何将情节提要用于多个目标对象

本文关键字:用于 目标对象 | 更新日期: 2023-09-27 18:00:12

我有一个c#类,我们称它为TwoButtonsHolder。在这节课上,我有两个UIElements,我想用StoryBoards制作动画。让我们称它们为ButtonAButtonB。因为我想让他们两个同时制作动画,所以我决定把他们所有的动画都放在一个Storyboard对象中(或者有更好的方法吗?)。所以现在我正试图在代码背后创建故事板对象,但我被困在了必须定义目标属性的部分。通常,当我声明动画时,我会使用这样的代码来设置属性

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

现在我在TwoButtonsHolder类型的目标对象中有了UIElement。如何创建情节提要并将动画目标属性设置为TwoButtonsHolder.ButtonA.UIElement.OpacityProperty?使用一个故事板为多个对象设置动画,以便同时运行动画,这种设计是否糟糕?(仅供参考,我想在代码背后尝试一下,还不想进入XAML,因为我觉得学习IMHO太复杂太难了)。谢谢

编辑:只是想补充一下,这两个按钮有不同的动画,我把它们放在同一个故事板中的唯一原因是让它们在同一时间开始动画

如何将情节提要用于多个目标对象

在一个情节提要中为多个对象设置动画绝对不是一个糟糕的设计。

你可能会这样写:

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();