我正在使用Label
和Storyboard
在WPF DoubleAnimations
控件上制作'花式'动画。
private void SetAnimation()
{
_storyboard = new Storyboard();
var slideDuration =
new Duration(TimeSpan.FromMilliseconds(((label.ActualWidth - ActualWidth + (double.IsNaN(Canvas.GetLeft(label)) ? 0 : Canvas.GetLeft(label)))*1.0)/_pixelsPerSecond*1000));
var slideAnim = new DoubleAnimation
{
From = double.IsNaN(Canvas.GetLeft(label)) ? 0 : Canvas.GetLeft(label),
To = (label.ActualWidth - ActualWidth) * -1,
Duration = slideDuration,
BeginTime = TimeSpan.FromSeconds(3)
};
Storyboard.SetTarget(slideAnim, label);
Storyboard.SetTargetProperty(slideAnim, new PropertyPath("(Canvas.Left)"));
_storyboard.Children.Add(slideAnim);
_storyboard.RepeatBehavior = RepeatBehavior.Forever;
}
但是,在Storyboard
播放后,Storyboard.Begin()
Canvas.SetLeft
停止工作。即使我停止Storyboard
到Storyboard.Stop()
,它也不会改变任何内容。
有什么想法吗?
答案 0 :(得分:1)
我最终成功地完成了工作。尽管dkozl解决方案在评论中没有奏效,但他的链接引导我回答,我发现here。
允许我再次进行更改的行是
label.BeginAnimation(Canvas.LeftProperty, null);
有效地停止动画此属性。