昨天羣裏有位童鞋提出如何在動畫完成事件Completed裏獲取到執行該動畫的UI對象。動畫
WPF裏動畫的Completed的自己並不會返回執行動畫的UI對象,但咱們能夠利用附加屬性Storyboard.TargetProperty來達到咱們想要的效果。ui
步驟:spa
1 在執行動畫前,先附加屬性記錄對象code
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 以供參考 :)blog