我在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原因和解决方案(在动画完成事件处理程序中设置最终值),但它似乎对我不起作用:在我的问题中我有一堆对象,并在动画中完成事件处理程序我无法得到哪个对象的动画结束。 有什么想法吗?
答案 0 :(得分:0)
您是否尝试过链接中首先描述的方式?
将动画的FillBehavior属性设置为Stop
答案 1 :(得分:0)
我以这种方式解决了:当每个动画完成时,执行此委托:
xAnimation.Completed += delegate
{
if (++completedXAnimations == n)
{
setFinalXValues(items);
}
};
方法setFinalXValues(items)删除动画并为动画中涉及的所有项目设置最终值。不是一个好方法,但它的工作原理。如果您有任何更好的想法,请发布它们。