Canvas.SetLeft不使用动画

时间:2015-08-28 18:22:15

标签: c# .net wpf canvas

我正在使用LabelStoryboard在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停止工作。即使我停止StoryboardStoryboard.Stop(),它也不会改变任何内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我最终成功地完成了工作。尽管dkozl解决方案在评论中没有奏效,但他的链接引导我回答,我发现here

允许我再次进行更改的行是

label.BeginAnimation(Canvas.LeftProperty, null);

有效地停止动画此属性。