画布.SetLeft对动画不起作用
本文关键字:不起作用 动画 SetLeft 画布 | 更新日期: 2023-09-27 18:10:13
我正在WPF中使用Storyboard
和DoubleAnimations
对Label
控件进行"花哨"动画。
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()
。
任何想法?
我最终成功了。虽然dkozl的解决方案在评论下的问题没有工作,他的链接引导我回答,我发现在这里。
允许我再次进行修改的行是
label.BeginAnimation(Canvas.LeftProperty, null);