我正在尝试通过Slider的值更改DoubleAnimation控件的持续时间,但它不会生效。我不知道为什么?
这是我的代码:
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));
}
任何帮助都会很感激!提前谢谢。
答案 0 :(得分:3)
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
属性,这样它就会在停止动画之前从它离开的地方恢复。