WPF故事板不会暂停

时间:2009-11-26 21:40:33

标签: wpf storyboard

我有一个非常简单的故事板,其Int32Animation针对我班上的自定义DP。

我的DP有一个OnChanged回调,它有一个Console.WriteLine(“当前值:”+ MyDP)。

当我运行故事板时,我可以看到控制台输出正常,当我暂停故事板时,控制台输出停止,但是当我恢复故事板时,DP不是它应该的下一个值。即使故事板已停止,它仍在继续增加。

有没有人有这样的事情发生在他们身上?

这是我正在做的事情的代码片段

            Int32Animation element = new Int32Animation();
            element.From = 0;
            element.To = targetTo;
            element.Duration = dur;
            Storyboard.SetTargetProperty(element, new PropertyPath(CurrentFrameProperty));
            _filmstripStoryboard = new Storyboard {SpeedRatio = this.FrameRate};
            _filmstripStoryboard.Children.Add(element);


        public void Start()
        {
            _filmstripStoryboard.Begin(this, true);
        }

        public void Pause()
        {
            _filmstripStoryboard.Pause(this);
        }

        public void Unpause()
        {
            _filmstripStoryboard.Resume(this);
        }

1 个答案:

答案 0 :(得分:1)

有一个thread in the MSDN forums,Microsoft确认此行为(即使故事板暂停一段时间后,当前值仍在继续)是当时(截至2006年)WPF版本中的一个错误。论坛主题包括建议的解决方法,具体来说,在您暂停时保存当前位置,并在您恢复时手动寻找相同的位置。

线程提到他们正在考虑在将来的版本中修复bug,但我不知道.NET 3.5或4.0是否实际修复了这个bug。

编辑:似乎在.NET 4.0中修复了错误 - 我能够暂停然后恢复动画,而不会在中间时间内向前跳跃。 (我没有在3.5中测试。)