我这样使用AnimationClock
:
DoubleAnimation ScrollAnimation = new DoubleAnimation();
....
AnimationClock AnimClock = new AnimationClock();
AnimClock = ScrollAnimation.CreateClock();
TranslateTransform oTransform = (TranslateTransform)transGroup.Children[1];
oTransform.ApplyAnimationClock(prop, AnimClock);
AnimClock.Controller.SpeedRatio = ScrollSlider.Value;
AnimClock.Completed += ScrollClockController_Completed;
oTransform.BeginAnimation(TranslateTransform.XProperty, ScrollAnimation);
我的代码工作正常但是当我尝试在AnimationClock-timeline
之后更改RepeatBehavior
属性(AutoReverse
或BeginAnimation
等)时,会发生以下错误:
AnimClock.Timeline.AutoReverse = true;
无法在对象' System.Windows.Media.Animation.DoubleAnimation'上设置属性。因为它处于只读状态
答案 0 :(得分:0)
"虽然大多数时间轴属性都是可动画的并且可以是数据绑定,但更改活动时间轴的属性值似乎没有任何效果。这是因为,当时间轴开始时,计时系统会复制时间轴并使用它来创建一个Clock对象。修改原件不会影响系统的复制。
要使时间轴反映更改,必须重新生成其时钟并用于替换先前创建的时钟。时钟不会自动为您重新生成。以下是应用时间轴更改的几种方法:
如果时间轴属于或属于故事板,则可以通过使用BeginStoryboard或Begin方法重新应用其故事板来使其反映更改。这具有重新启动动画的副作用。在代码中,您可以使用Seek方法将故事板推进到之前的位置。
如果使用BeginAnimation方法将动画直接应用于属性,请再次调用BeginAnimation方法并将已修改的动画传递给它。
如果您直接在时钟级别工作,请创建并应用一组新的时钟并使用它们来替换之前生成的时钟集。"
找到答案