WPF动画之后属性值无法改变
? ? ? ? 前一段時間使用WPF寫2048游戲的時候,遇到下面的情形:使用按鍵對色塊進行移動時,觸發位置左邊X和Y屬性的DoubleAnimation動畫,但是如果此時改變窗口的大小,并觸發Canvas.SetLeft重新設置色塊的位置時,發現色塊沒有更新到正確的位置上。
? ? ? ??通過調試發現,Canvas.SetLeft調用前后X和Y的數值并沒有發生變化。
? ? ? ??最終在微軟官網找到原因
? ? ? ??http://msdn.microsoft.com/zh-cn/library/aa970493(v=VS.100).aspx
? ? ? ??官方解釋,某些情況下,對屬性進行動畫處理之后,無法修改該屬性的值。
? ? ? ??也就是說,動畫對數值進行了加鎖,在解鎖之前,其他代碼無法對其進行修改。
? ? ? ??官網提供三種解決方法:
? ? ? ?1、?將動畫的?FillBehavior?屬性設置為?Stop
? ? ? ??2、移除整個演示圖板。
? ? ? ? 3、?從單個屬性移除動畫。
? ? ? ??第一種方式在動畫結束之后,數值會恢復之前的值,所以最終需要重新設定該值。
? ? ? ??第二種方式通過使用?RemoveStoryboard?或?Storyboard.Remove移除Storyboard,直接消除其影響。
? ? ? ??第三種使用正在進行動畫處理的對象的?BeginAnimation(DependencyProperty,?AnimationTimeline)?方法。?將正進行動畫處理的屬性指定為第一個參數,將?null?指定為第二個參數。
? ? ? ??上面三種方法親測可用。
?
?
posted on 2019-05-01 10:16 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lonelyxmas/p/10799261.html
總結
以上是生活随笔為你收集整理的WPF动画之后属性值无法改变的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JMeter性能测试的基础知识和个人理解
- 下一篇: 吴裕雄 python 机器学习——数据预