如何阅读 Storyboard 属性 "From" 或 "To"(等)
How to read Storyboard property "From" or "To" (etc.)
我已经通过代码创建了 Storyboard
,在动画期间我需要阅读一些 properties
,例如 From
和 To
等。如何做到这一点?我需要获取这些信息,因为在动画期间需要 add/remove/edit 效果。
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 ????
在您的代码中,您无法访问 From
和 To
的原因是您使用的是通用 Timeline
类型,它没有定义这些属性(因为只有派生的types 然后用它们动画的特定类型定义 From
和 To
)。所以要让它工作,你需要将它转换为 DoubleAnimation
,只要你知道这是实际使用的类型:
var opacityAnimation = (DoubleAnimation)timeline;
From
和 To
是正常的依赖属性(参见 here and here)。这意味着访问它们的值的方式与访问任何其他控件的 属性.
的方式完全相同
在你的代码中:
var fromValue = opacityAnimation.From;
var toValue = opacityAnimation.To;
为了更简单地访问动画,您可以在 XAML:
中为动画本身添加一个 x:Name
属性
<DoubleAnimation x:Name="MyAnimation" ... />
我已经通过代码创建了 Storyboard
,在动画期间我需要阅读一些 properties
,例如 From
和 To
等。如何做到这一点?我需要获取这些信息,因为在动画期间需要 add/remove/edit 效果。
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 ????
在您的代码中,您无法访问 From
和 To
的原因是您使用的是通用 Timeline
类型,它没有定义这些属性(因为只有派生的types 然后用它们动画的特定类型定义 From
和 To
)。所以要让它工作,你需要将它转换为 DoubleAnimation
,只要你知道这是实际使用的类型:
var opacityAnimation = (DoubleAnimation)timeline;
From
和 To
是正常的依赖属性(参见 here and here)。这意味着访问它们的值的方式与访问任何其他控件的 属性.
在你的代码中:
var fromValue = opacityAnimation.From;
var toValue = opacityAnimation.To;
为了更简单地访问动画,您可以在 XAML:
中为动画本身添加一个x:Name
属性
<DoubleAnimation x:Name="MyAnimation" ... />