如何知道窗口是否已完成加载?

时间:2012-02-10 16:08:52

标签: c# wpf events event-handling loaded

我正在使用WPF构建一个应用程序,我有2个动画,我希望它们之间有延迟。 但是当我在

尝试时
MainWindow_Loaded(object sender, RoutedEventArgs e)

事件, 它只是在加载时延迟,我想念第一个动画。

任何帮助?

3 个答案:

答案 0 :(得分:2)

也许值得尝试的是使用Dispatcher对象调用动画代码。通过设置调度程序优先级,您可以推迟执行,直到完成所有数据绑定(甚至是异步)。

   // Schedule the update function in the UI thread.
   Dispatcher.BeginInvoke(
      System.Windows.Threading.DispatcherPriority.Loaded, ...);

如果这不起作用,请尝试更改优先级 - 优先级越低,您的操作将被调用越晚。

答案 1 :(得分:0)

遗憾的是,没有内置通知通知您加载(绑定呈现)已完成。所以应该拿出自己的解决方案。

可以在MainWindow_Loaded中写这样的内容(伪代码):

new Thread(new ThreadStart(new Action(() =>
{
      Sleep(2000); // a couple of seconds sleep 
      StartAnimation(); 

}))).Start();

希望这有帮助。

答案 2 :(得分:0)

我发现Window.ContentRendered(或Me.ContentRendered)成功找出窗口加载完成的时间。

See this answer