我有这个代码:
Window w = // something
w.Loaded += // some code to take a screenshot of the window
w.Show();
Loaded事件在窗口完全加载之前触发,我得到这个图像:
我可以在Thread.Sleep
之后和屏幕截图之前添加w.Show()
或其他内容,但我需要为数百个窗口运行这段代码。
我的问题是:当窗口满载时是否会发生另一个事件?或某种方式来实现这一点,而不是让线程进入睡眠状态。
由于
答案 0 :(得分:25)
查看MSDN中的Object Lifetime Events文章,您可以找到:
Loaded事件在最终渲染之前引发,但在之后 布局系统已计算出渲染所需的所有值。 Loaded需要包含元素的逻辑树 内部完成,并连接到一个演示文稿源 提供HWND和渲染表面。
您应该尝试一些不太适合您需要的替代活动。您应该按以下顺序尝试:
请注意,这些事件可能会在您的窗口生命周期内多次触发,因此请记住您的应用程序。
WPF是数据驱动的UI架构,以我们习惯于WinForms的方式工作并不是很愉快。作为一个比我更聪明的人,曾经说过,WPF会让艰难的事情变得微不足道和琐碎的事情。