[WPF] 动画Completed事件里获取执行该动画的UI对象

本文介绍了如何在WPF动画完成事件Completed里获取执行该动画的UI对象,通过附加属性Storyboard.TargetProperty实现目标对象的记录与获取。
原文: [WPF] 动画Completed事件里获取执行该动画的UI对象

昨天群里有位童鞋提出如何在动画完成事件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);
}

 

附带一个 Demo 以供参考 :)

 

posted on 2014-06-08 11:46 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3776021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值