【问题标题】:WPF StoryBoard.Completed event not firingWPF StoryBoard.Completed 事件未触发
【发布时间】:2012-12-20 10:12:05
【问题描述】:

我在关闭主窗口之前有一个动画,如下面的代码所示。问题是StoryBoard.Completed 没有触发。任何线索是什么原因造成的?

代码

DoubleAnimation dblAnimX = new DoubleAnimation(1.0, 0.0, new  Duration(TimeSpan.FromSeconds(0.5)));
dblAnimX.SetValue(Storyboard.TargetProperty, this);

DoubleAnimation dblAnimY = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5)));
dblAnimY.SetValue(Storyboard.TargetProperty, this);

Storyboard story = new Storyboard();
Storyboard.SetTarget(dblAnimX, this);
Storyboard.SetTarget(dblAnimY, this);
Storyboard.SetTargetProperty(dblAnimX, new PropertyPath("RenderTransform.ScaleX"));
Storyboard.SetTargetProperty(dblAnimY, new PropertyPath("RenderTransform.ScaleY"));

story.Children.Add(dblAnimX);
story.Children.Add(dblAnimY);
story.Begin(this);

story.Completed += (o, s) => { this.Close(); };

【问题讨论】:

    标签: c# .net wpf storyboard


    【解决方案1】:

    在调用 Begin 之前添加 Completed 处理程序:

    story.Completed += (o, s) => Close();
    story.Begin(this);
    

    这种行为的原因是 Completed 处理程序附加到在 Begin 期间创建的内部时钟对象。见Completed中的备注部分:

    虽然此事件处理程序似乎与时间线相关联, 它实际上注册了为此时间线创建的时钟。为了 更多信息,请参阅计时事件概述。

    【讨论】:

    • 谢谢你!这帮助了我,也要求我打自己的头说,“Duh!”。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多