【问题标题】:WPF Storyboard stops by itselfWPF Storyboard 自行停止
【发布时间】:2010-12-21 11:49:49
【问题描述】:

我的故事板似乎会自行随机停止,我终其一生都无法弄清楚原因。

它似乎停止和随机间隔。

private void CreateStoryboard(int from)
    {
        int? targetTo;
        Duration dur;
        targetTo = 150;
        dur = 150;

        Int32Animation element = new Int32Animation();
        element.From = from;
        element.To = targetTo;
        element.Duration = dur;
        Storyboard.SetTargetProperty(element, new PropertyPath(CurrentFrameProperty));
        _filmstripStoryboard = new Storyboard {SpeedRatio = this.FrameRate};
        _filmstripStoryboard.Children.Add(element);
        _filmstripStoryboard.Completed += new EventHandler(FilmstripStoryboard_Completed);
         _filmstripStoryboard.Begin(this, true);
    }

如您所见,我影响了自定义“CurrentFrameProperty”DP,它有一个回调方法,我打印出当前帧。

出于某种原因,我只是不知道为什么,故事板就停止了。完成的事件不会被触发,并且回调方法停止被调用。

而且我确信我不会在任何地方调用 stop()。

如果有人遇到过这个问题或者可以帮我调试一下,我将不胜感激。

【问题讨论】:

    标签: wpf animation storyboard


    【解决方案1】:

    您的代码应该可以工作。我不确定 SpeedRatio=this.FrameRate 是做什么的,但是您可以轻松地测试您的代码并移除该部分。我最好的猜测是其他一些代码正在影响您的 DpendencyProperty,并且多线程代码正在咬您。

    【讨论】:

    • 你能想出一种调试方法吗?
    • 对于初学者来说,隔离这段代码,这样如果没有其他因素可以影响您的 DP,您就可以 100% 确定它可以工作。如果是这样,请将您的整个项目的行为加一一次功能,直到您可以重现该问题。听起来很标准,嗯? ;-) 祝你好运!
    • 有没有办法检查情节提要(或动画)是否被处理掉了?我知道 IDispose 接口,但是如果对象只是设置为 null,它会被调用吗?
    • 对不起,我的深度不够。看到没有人对这个问题和你之前的问题做出反应,我只是想让你知道,我认为问题不在你展示给我们的代码中。
    • 好吧,我只是将 Console 语句放在持有 Storyboard 的对象的析构函数中,而且它们很早就被调用了。我想我需要弄清楚为什么它们被设置为 null/destructed
    【解决方案2】:

    是解构器!我引用故事板和动画的对象被破坏了,所以动画看起来就像冻结了一样。

    用户错误:)

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多