我正在构建一个使用WPF的应用程序,并且我有两个动画我想在它们之间有所延迟。 但是当我尝试,在如何知道窗口是否已完成加载?
MainWindow_Loaded(object sender, RoutedEventArgs e)
事件, 它只是延迟加载时,我错过了第一个动画。
有帮助吗?
我正在构建一个使用WPF的应用程序,并且我有两个动画我想在它们之间有所延迟。 但是当我尝试,在如何知道窗口是否已完成加载?
MainWindow_Loaded(object sender, RoutedEventArgs e)
事件, 它只是延迟加载时,我错过了第一个动画。
有帮助吗?
不幸的是,没有内置通知告知您加载(绑定呈现)已完成。所以应该想出你自己的解决方案。
一个可能是MainWindow_Loaded
写这样的事情(一个伪):
new Thread(new ThreadStart(new Action(() =>
{
Sleep(2000); // a couple of seconds sleep
StartAnimation();
}))).Start();
希望这有助于。
那么,代码不起作用,但我想这是因为我不太了解使用线程,但它肯定回答了quetsion,谢谢。 – 2012-02-10 16:57:49
也许值得一试的是使用Dispatcher对象调用带有动画的代码。通过设置调度程序的优先级,您可以推迟执行,直到例如完成所有数据绑定(即使是异步)。
// Schedule the update function in the UI thread.
Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Loaded, ...);
如果这不起作用,请尝试更改优先级 - 优先级越低,您的操作将被调用。
我发现Window.ContentRendered(或Me.ContentRendered)的成功,以找出窗口何时完成加载。
埃里克,你看到的动画有[的BeginTime(http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.begintime.aspx )财产?也许这可以帮助你动画开始延迟。 – Clemens 2012-02-10 18:38:09
不,我不喜欢。谢谢! – 2012-02-10 18:53:40
看看[这个答案](http://stackoverflow.com/a/8886941/187955)。 – 2012-02-10 16:45:18