WPF动画之后属性值无法改变
来源:互联网 发布:fluke网络测试仪 编辑:程序博客网 时间:2024/05/22 06:49
前一段时间使用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 指定为第二个参数。
上面三种方法亲测可用。
- WPF动画之后属性值无法改变
- WPF 动画执行后属性无法修改
- 属性动画的改变
- WPF 处理图像之后无法另存
- WPF 如何:在使用演示图板对属性进行动画处理后设置该属性?添加动画后属性不能锁死不能改变?
- View进行动画之后无法设置隐藏
- WPF给属性加动画后不能修改属性值解决方案
- Android动画不改变可见属性
- 解决使用属性动画没有效果,监听发现属性值未发生改变问题
- BackgroundWorker改变WPF进度条值
- CodedUI Test 测试WPF程序,无法获取控件属性值的解决方法
- 属性值改变信号
- wpf动画——new PropertyPath属性链
- WPF动画
- WPF动画
- [WPF]动画
- WPF动画
- (WPF)属性值继承
- 兼职分享
- 第一个Servlet
- Dubbo之旅--架构路线
- 回顾2014,展望2015
- 利用CSS和<div>手绘静态多级菜单
- WPF动画之后属性值无法改变
- Cocos2d-x 跨平台特性分析
- C++学习笔记(第一章)
- asp.net中分页控件AspNetPager美化样式
- 操作控制台属性
- 观察者模式
- 需要包含字母、数字、下划线中不少于两位并且长度大于6
- SQL Server 中Merge 的使用
- android service被系统回收的解决方法