我创建了一个需要 400 毫秒才能运行的动画,并将其附加到EventTrigger
我Loaded
RoutedEvent
的Window
.
但我认为窗口在加载后不会立即显示*,所以我根本看不到动画。
Window
加载时运行动画的一些常见模式是什么?
还有,我什么时候应该在单独的线程中运行动画?
* 它可能在加载后绘制窗口,并在完成绘制后显示窗口,澄清会有所帮助。
我创建了一个需要 400 毫秒才能运行的动画,并将其附加到EventTrigger
我Loaded
RoutedEvent
的Window
.
但我认为窗口在加载后不会立即显示*,所以我根本看不到动画。
Window
加载时运行动画的一些常见模式是什么?
还有,我什么时候应该在单独的线程中运行动画?
* 它可能在加载后绘制窗口,并在完成绘制后显示窗口,澄清会有所帮助。
我已经尝试了以下答案中建议的解决方案:
https://stackoverflow.com/a/8886941/494094
Window.ContentRendered
UIElement.LayoutUpdated
Window.Activated
到目前为止,Window.Activated
事件似乎最适合我。唯一需要注意的是,这些事件都不是RoutedEvent
s,因此您需要在后面的代码中定义动画,如下所示:
this.Activated += (sender, args) => ((Storyboard) FindResource("MyAnimation")).Begin();
400 毫秒非常快,因此加载窗口可能需要更长的时间。我建议将其保留在同一个线程中,但使用计时器事件。Timer Interval将其延迟到窗口完全加载。
我将时间事件用于启动屏幕等......并且我敢肯定,我会为定时动画做同样的事情。只需要一点练习。我的建议是在时间上使用很长的延迟以确保它按照您想要的方式运行......然后减少计时器将其放在加载屏幕中您想要的位置。