Изменить продолжительность элемента управления DoubleAnimation с помощью ползунка
Я пытаюсь изменить продолжительность элемента управления DoubleAnimation по значению Slider, но это не дает эффекта. Не знаю почему?
Вот мой код:
XAML:
<Border.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="borUpperTranslate" Storyboard.TargetProperty="X">
<DoubleAnimation Name="dbaUpperTranslate" From="418" To="230" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
C#:
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
Slider sl = sender as Slider;
dbaUpperTranslate.Duration = new Duration(TimeSpan.FromSeconds(sl.Value));
}
Любая помощь будет признательна! Заранее спасибо.
1 ответ
RepeatBehavior="Forever"
установлен в True
, так что эта анимация будет работать вечно, которая будет инициирована с длительностью, установленной в 0:0:1.
Если вы удалите RepeatBehavior="Forever"
и зацепить событие сказать MouseLeftButtonDown
работает как положено.
Однако, если вы хотите обновить его с RepeatBehavior="Forever"
, вам нужно stop animation first, set duration and than restart animation
,
Установить имя на storyBoard:
<Storyboard Storyboard.TargetName="borUpperTranslate"
Storyboard.TargetProperty="X" Name="storyboard">
И в обработчике:
Slider sl = sender as Slider;
storyboard.Stop();
dbaUpperTranslate.Duration = new Duration(TimeSpan.FromSeconds(sl.Value));
storyboard.Begin();
Кроме того, если вы не хотите дергаться, вы должны рассмотреть возможность удаления From
атрибута, поэтому он будет возобновлен с того места, где он был, до остановки анимации