使用SetTarget方法定位多个对象的故事板不起作用
任何人都可以帮助我找出为什么这不起作用。
Brush变量包含一个预先填充的画笔列表。 如果我尝试在迭代期间直接应用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方法有什么问题,要么是一个bug,要么我只是不应该使用它。 无论如何,我解决了在运行时使用SetTargetName方法为我的画笔生成唯一名称的问题。
再次感谢所有的建议。
尝试使用Storyboard.SettargetName方法而不是Storyboard.SetTarget
。 我为你准备了工作样品:
var brushes = new string[] { "br1", "br2", "br3" }; var sb = new Storyboard(); var dur = new Duration(TimeSpan.FromMilliseconds(500.0)); double toValue = 1.0; foreach (var brush in brushes) { var anim = new DoubleAnimation(toValue, dur); Storyboard.SetTargetName(anim, brush); Storyboard.SetTargetProperty(anim, new PropertyPath("(0)", new DependencyProperty[] { Brush.OpacityProperty })); sb.Children.Add(anim); } sb.Begin(this);
请记住,在这种情况下,您还应将Namescope设置为Storyboard.Begin
方法的参数。
另请参阅: Stackoverflow上的另一个答案 。
上述就是C#学习教程:使用SetTarget方法定位多个对象的故事板不起作用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1034828.html