您的位置:首页 > 其它

WPF 如何:在使用演示图板对属性进行动画处理后设置该属性?添加动画后属性不能锁死不能改变?

2013-11-17 21:12 811 查看
如果您在使用WPF/Silverlight进行相关动画开发中使用了Storyboard,并对关联属性进行了动画修改,那么您是否有注意到这些关联属性常常无法再通过直接赋值的形式去修改,尽管它的值已经被更改,但却始终无法在界面上得以体现。

在WPF/Silverlight中使用Storyboard修改过关联属性后,这些关联属性将被锁定,外界是无法通过直接赋值的形式对其进行修改的。难道束手无策了?其实msdn很早就给我们提供了3个解决方案,原文地址:

http://msdn.microsoft.com/zh-cn/library/aa970493.aspx

解析:

方法一:将动画的 FillBehavior 属性设置为 Stop(通过将 FillBehavior 设置为 Stop,即通知动画在到达其活动期末尾后停止影响其目标属性。)

只有在动画到达其活动期末尾时才有效。即动画stop后

Button2BackgroundBrush.Color = Colors.Blue;


方法二:移除整个演示图板

通过使用 RemoveStoryboard 触发器或 Storyboard.Remove 方法,通知演示图板动画停止影响其目标属性。 此方法与设置 FillBehavior属性的不同之处在于:您可以在任何时候移除演示图板,而 FillBehavior 属性只有在动画到达其活动期末尾时才有效。

MyStoryboard.Remove(Button3);
Button3BackgroundBrush.Color = Colors.Blue;


方法三:从单个属性移除动画

禁止动画影响属性的另一种方法是使用正在进行动画处理的对象的 BeginAnimation(DependencyProperty, AnimationTimeline) 方法。 将正进行动画处理的属性指定为第一个参数,将 null 指定为第二个参数。

Button4BackgroundBrush.BeginAnimation(SolidColorBrush.ColorProperty, null);
Button4BackgroundBrush.Color = Colors.Blue;

移除后还可以继续设置回来
Button4BackgroundBrush.BeginAnimation(SolidColorBrush.ColorProperty, 动画);

另外还有介绍了另外的两种方法,可以参考。

http://www.cnblogs.com/alamiye010/archive/2009/08/26/1554539.html


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐