[WPF] 動畫Completed事件裏獲取執行該動畫的UI對象

昨天羣裏有位童鞋提出如何在動畫完成事件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

相關文章
相關標籤/搜索