我已经通过代码创建了Storyboard
,并且在动画制作期间,我需要阅读properties
之类的From
和To
等。如何做到这一点?我需要获取这些信息,因为在动画过程中需要添加/删除/编辑效果。
Storyboard
使用DoubleAnimation
。以下简短示例显示了如何获取一些值,但找不到如何获取From
或To
值的方法。 Timeline
(或Storyboard
)没有这些值。
//GET EFFECT - THIS CALL GETS ADDED ANIMATION IN STORYBOARD
Timeline TargetEffect = GetEffect(AnimationName, AnimationEffectType.Opacity);
//FROM
double From = (TargetElement as FrameworkElement).Opacity;
//DURATION
TimeSpan Duration = TargetEffect.Duration.TimeSpan;
//DELAY
TimeSpan Delay = TargetEffect.BeginTime.Value;
//REPEAT
RepeatBehavior Repeat = TargetEffect.RepeatBehavior;
//REVERSE
bool AutoReverse = TargetEffect.AutoReverse;
//FROM OR TO ????
答案 0 :(得分:1)
在您的代码中,您无法访问From
和To
的原因是您使用的是普通的Timeline
类型,该类型未定义这些属性(因为仅继承了派生类型用它们设置动画的特定类型来定义From
和To
。因此,要使其正常运行,您需要将其强制转换为DoubleAnimation
,只要您知道这是实际使用的类型即可。
var opacityAnimation = (DoubleAnimation)timeline;
From
和To
是普通的依赖项属性(请参见here和here)。这意味着访问它们的值的方式与使用其他任何控件的属性的方式完全相同。
您只需在代码中执行
var fromValue = opacityAnimation.From;
var toValue = opacityAnimation.To;
要更简单地访问动画,可以在XAML中向动画本身添加x:Name
属性:
<DoubleAnimation x:Name="MyAnimation" ... />