【发布时间】:2019-06-29 11:26:19
【问题描述】:
谁能帮我找出为什么这不起作用。
画笔变量包含一个预填充的画笔列表。
如果我尝试在迭代期间直接应用BeginAnimation,它工作正常。但是单独启动每个动画的开销很大...
所以我试图将所有动画放在一个故事板中,然后一次性触发它们......
var storyBoard = new Storyboard();
var duration = new Duration(TimeSpan.FromMilliseconds(time));
foreach (Brush brush in brushes)
{
var animation = new DoubleAnimation(toValue, duration);
storyBoard.Children.Add(animation);
Storyboard.SetTargetProperty(animation, new PropertyPath(Brush.OpacityProperty));
Storyboard.SetTarget(animation, brush);
}
storyBoard.Begin();
这段代码什么都不做(我可以看到...)。
编辑: 仍然不确定 SetTarget 方法有什么问题,要么是错误,要么我只是没有按应有的方式使用。无论如何,我解决了在运行时为我的画笔生成唯一名称并使用 SetTargetName 方法的问题。
【问题讨论】:
-
您不应该先找到包含画笔的属性,然后是画笔不透明度吗?像
new PropertyPath("(Shape.Fill).(SolidColorBrush.Opacity)")这样的东西,然后你会在下一行看到更接近StoryBoard.SetTarget(animation, this)的东西?我充其量只是一个初学者,但这似乎是问题的一部分。您想更改对象上属性的画笔,而不是画笔本身作为目标(我认为您无论如何都不能这样做)