【问题标题】:How to read Storyboard property "From" or "To" (etc.)如何读取 Storyboard 属性“From”或“To”(等)
【发布时间】:2019-05-10 11:32:22
【问题描述】:

我已经通过代码创建了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 ????

【问题讨论】:

标签: c# animation uwp storyboard dependency-properties


【解决方案1】:

在您的代码中,您无法访问FromTo 的原因是您使用的是通用Timeline 类型,它没有定义这些属性(因为只有派生类型然后定义From 和@ 987654327@ 与他们动画的特定类型)。所以要让它工作,你需要将它转换为DoubleAnimation,只要你知道这是实际使用的类型:

var opacityAnimation = (DoubleAnimation)timeline;

FromTo 是正常的依赖属性(参见 herehere)。这意味着访问它们的值的工作方式与任何其他控件的属性完全相同。

在你刚刚做的代码中:

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

为了更简单地访问动画,您可以在 XAML 中将 x:Name 属性添加到动画本身:

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

【讨论】:

  • 很高兴它有帮助!快乐编码:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2023-03-13
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
相关资源
最近更新 更多