如何读取情节提要属性“从”或“到”(等)

时间:2018-12-09 09:19:58

标签: c# animation uwp storyboard dependency-properties

我已经通过代码创建了Storyboard,并且在动画制作期间,我需要阅读properties之类的FromTo等。如何做到这一点?我需要获取这些信息,因为在动画过程中需要添加/删除/编辑效果。

Storyboard使用DoubleAnimation。以下简短示例显示了如何获取一些值,但找不到如何获取FromTo值的方法。 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 ????

1 个答案:

答案 0 :(得分:1)

在您的代码中,您无法访问FromTo的原因是您使用的是普通的Timeline类型,该类型未定义这些属性(因为仅继承了派生类型用它们设置动画的特定类型来定义FromTo。因此,要使其正常运行,您需要将其强制转换为DoubleAnimation,只要您知道这是实际使用的类型即可。

var opacityAnimation = (DoubleAnimation)timeline;

FromTo是普通的依赖项属性(请参见herehere)。这意味着访问它们的值的方式与使用其他任何控件的属性的方式完全相同。

您只需在代码中执行

var fromValue = opacityAnimation.From;
var toValue = opacityAnimation.To;

要更简单地访问动画,可以在XAML中向动画本身添加x:Name属性:

<DoubleAnimation x:Name="MyAnimation" ... />