【问题标题】:How to know if window has finished loading?如何知道窗口是否已完成加载?
【发布时间】:2012-08-04 00:22:05
【问题描述】:

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

MainWindow_Loaded(object sender, RoutedEventArgs e)

事件, 它只是在加载时延迟,我错过了第一个动画。

有什么帮助吗?

【问题讨论】:

  • 看看this answer
  • erik,你见过动画有一个BeginTime 属性吗?也许这可以帮助您解决动画开始延迟问题。

标签: c# wpf events event-handling loaded


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    可以在MainWindow_Loaded 写这样的东西(伪代码):

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

    希望这会有所帮助。

    【讨论】:

    • 好吧,代码不起作用,但我想这是因为我对使用 Threads 了解不多,但它确实回答了这个问题,谢谢。
    【解决方案3】:

    我已经成功使用 Window.ContentRendered(或 Me.ContentRendered)来确定窗口何时完成加载。

    See this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多