Welcome

首页 / 软件开发 / .NET编程技术 / WPF动画Completed事件里如何获取执行该动画的UI对象

WPF动画Completed事件里如何获取执行该动画的UI对象2015-01-01 cnblogs 萧延强昨天群里有位童鞋提出如何在动画完成事件Completed里获取到执行该动画的UI对象。

WPF里动画的Completed的本身并不会返回执行动画的UI对象,但我们可以利用附加属性Storyboard.TargetProperty来达到我们想要的效果。

步骤:

1 在执行动画前,先附加属性记录对象

DoubleAnimation ani = new DoubleAnimation();ani.From = start;ani.To = end;ani.Duration = new Duration(TimeSpan.FromSeconds(0.25));ani.Completed += ani_Completed; /* !!! 附加属性Storyboard.Target,用于指定执行动画的UI对象 !!! */Storyboard.SetTarget(ani, uiElement);/* 启动动画 */uiElement.BeginAnimation(Canvas.LeftProperty, ani);
2 在动画的Completed事件方法里取回

if (sender is AnimationClock){  AnimationTimeline timeline = (sender as AnimationClock).Timeline; /* !!! 通过附加属性把UI对象取回 !!! */ object uiElement = Storyboard.GetTarget(timeline);}
附带一个