如何在设置动画后为一组对象设置属性

时间:2009-12-23 17:36:18

标签: c# wpf animation

我在Canvas中有一些控件。我需要为Canvas.Top和Canvas.Left属性设置动画。我正在使用foreach开始所有动画:

foreach (Control c in controls)
{
   tc.BeginAnimation(Canvas.TopProperty, yAnimation);
   tc.BeginAnimation(Canvas.LeftProperty, xAnimation);
}

其中xAnimation和yAnimation是两个DoubleAnimation。 一切正常,但在动画这些对象后,我再也无法拖动它们了。我找到here原因和解决方案(在动画完成事件处理程序中设置最终值),但它似乎对我不起作用:在我的问题中我有一堆对象,并在动画中完成事件处理程序我无法得到哪个对象的动画结束。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过链接中首先描述的方式?

  

将动画的FillBehavior属性设置为Stop

答案 1 :(得分:0)

我以这种方式解决了:当每个动画完成时,执行此委托:

xAnimation.Completed += delegate
{
   if (++completedXAnimations == n)
   {
       setFinalXValues(items);
   }
};

方法setFinalXValues(items)删除动画并为动画中涉及的所有项目设置最终值。不是一个好方法,但它的工作原理。如果您有任何更好的想法,请发布它们。