[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 以供參考 :)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM