1. 在FrameworkElement.Triggers中启动动画的几点备注:
· 此Triggers集合中只支持EventTrigger,使用其他类型的Trigger将会加载失败。
· EventTrigger.SourceName指定的元素必须在当前的EventTrigger所应用的元素的逻辑子树内。如果EventTrigger应用于自身元素,则不需要制定SourceName属性。
· 当对一个依赖属性应用了动画后,再对该属性赋值需要特别注意Timeline.FillBehavior的值。如果Timeline.FillBehavior==HoldEnd,那么在代码中对该属性进行赋值是没有效果的。该属性将会一直持有动画赋予的值。原因是动画赋值有较高的优先级。可以设置FillBehavior为Stop或者在该属性上清除动画来解决此问题:
btn.BeginAnimation(Button.OpacityProperty, null);
2. 关于启动动画的两种方式的几点备注,启动动画有两种方式:
· 一种是使用UIElement.BeginAnimation方法。该方法会启动参数所制定的动画来animate自身的某个依赖属性。非常简单,但是该方法只能启动一个动画。
· 另一种是使用Storyboard.Begin方法。该方法可以一次启动多个动画,只要这些动画包含在Storyboard里面。而且其中包含每个Timeline都需要用Storyboard.SetTargetName和Storyboard.SetTargetProperty来制定目标元素和目标属性。需要特别注意的一个缺点是:Storyboard中包含的所有Timeline的Target都必须是FrameworkElement或者FrameworkContentElement的派生类的对象。否则该动画不会有任何效果。这是由于PropertyPath类造成的,因为在SetTargetProperty的时候需要提供一个PropertyPath的一个构造,而PropertyPath被限制与引用从FrameworkElement或者FrameworkContentElement的路径,这是PropertyPath用在Target mode的限制。
from:http://blog.csdn.net/gentle_wolf/article/details/6386661