画布.SetLeft对动画不起作用

本文关键字:不起作用 动画 SetLeft 画布 | 更新日期: 2023-09-27 18:10:13

我正在WPF中使用StoryboardDoubleAnimationsLabel控件进行"花哨"动画。

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()

任何想法?

画布.SetLeft对动画不起作用

我最终成功了。虽然dkozl的解决方案在评论下的问题没有工作,他的链接引导我回答,我发现在这里。

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

label.BeginAnimation(Canvas.LeftProperty, null);