Как прочитать свойство Storyboard "From" или "To" (и т. Д.) - PullRequest
0 голосов
/ 09 декабря 2018

Я создал 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 ????

1 Ответ

0 голосов
/ 09 декабря 2018

В вашем коде причина, по которой вы не можете получить доступ к From и To, заключается в том, что вы используете общий тип Timeline, для которого эти свойства не определены (поскольку только производные типы определяют From и To с конкретным типом, который они оживляют).Поэтому, чтобы заставить его работать, вам нужно привести его к DoubleAnimation, если вы знаете, что это действительно используемый тип:

var opacityAnimation = (DoubleAnimation)timeline;

From и To - это обычные свойства зависимости(см. здесь и здесь ).Это означает, что доступ к их значению работает точно так же, как и для любого другого элемента управления.

В коде, который вы просто делаете:

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

Чтобы проще получить доступ к анимации, вы можете добавить x:Name атрибут самой анимации в XAML:

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