【问题标题】:WPF: How to call a method at a specific point in time while an animation is runningWPF:如何在动画运行时在特定时间点调用方法
【发布时间】:2013-07-09 18:03:15
【问题描述】:

我的问题如下:

我有一个动画,它使面板滑动直到它消失(我动画它的 margin 属性)。动画结束后,我希望面板回到开始时的位置。所以我将 autoreverse 属性设置为 true,动画持续时间自动加倍,并且一切运行良好。问题是我的程序中仍然缺少一些基本的东西:当动画中途运行时,即面板消失时,我必须做一些处理,调用一个方法,使面板内容改变它的 UI。 那么,有没有办法做到这一点?

谢谢

【问题讨论】:

  • 您可以尝试使用在动画开始时开始的计时器.....
  • 你可以简化一些事情:不要使用自动反转。将动画分为两部分:1)滑入,然后更改 UI,2)滑出
  • 这就是我现在所做的,我希望有更精简的东西
  • 你是如何制作动画的?通过故事板?
  • 是的,因为我必须同时移动 2 个面板

标签: wpf animation


【解决方案1】:

正如@deafjeff 建议的那样,您可以制作 2 个动画而不是使用自动反转。为第一个动画的Completed 事件注册一个处理程序。进行 UI 更改并在处理程序代码中启动第二个动画。代码如下:

private void onFirstAnimationCompleted(object sender, EventArgs e)
{
  DoUIChange();
  SecondAnimation.Start();
} 

【讨论】:

  • 谢谢,但正如我所说的,这就是我所做的,我问了这个问题,因为我本来想放一个动画。
  • 您仍然可以将两个动画包装在Storyboard 中,并为动画中的幻灯片注册Completed EventHandler。如果您坚持使用“自动反向”方法,您可以随时使用DispatcherTimer 安排更新 ui 代码,但我认为这不是一个巧妙的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2011-10-06
  • 2017-12-13
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多