[WPF] WPF中的窗口的生命周期
为建立中文知识库加块砖 ——中科大胡不归
0. 前言
做GUI开发应当熟悉Activity或Window的生命周期,这是开发的基础。
WPF窗体的生命周期图如下:
Show()、ShowDialog()方法:Show()方法显示非模态窗口,这意味着应用程序所运行的模式允许用户在同一个应用程序中激活其他窗口。ShowDialog()方法显示模态窗口,这个基本和WinForm类似
当初始化窗口时,将引发 SourceInitialized 事件并显示窗口。
2. 窗体的激活
在首次打开一个窗口时,它便成为活动窗口(除非是在 ShowActivated 设置为 false 的情况下显示)。 活动窗口是当前正在捕获用户输入(例如,键击和鼠标单击)的窗口。 当窗口变为活动窗口时,它会引发 Activated 事件。
当第一次打开窗口时,只有在引发了 Activated 事件之后,才会引发 Loaded 和 ContentRendered 事件。 记住这一点,在引发 ContentRendered 时,便可认为窗口已打开。
窗口变为活动窗口之后,用户可以在同一个应用程序中激活其他窗口,还可以激活其他应用程序。 当这种情况出现时,当前的活动窗口将停用,并引发 Deactivated 事件。 同样,当用户选择当前停用的窗口时,该窗口会再次变成活动窗口并引发 Activated。
打开窗体的事件执行顺序为:
当用户关闭窗口时,窗口的生命便开始走向终结。
Close()方法:关闭窗体,并释放窗体的资源。
Closing事件、Closed事件:关闭时、关闭后引发的事件,通常在Closing事件中提示用户是否退出等信息。
关闭窗体的事件执行顺序为:
户在运行系统上的多个窗口中切换时,Activated和Deactivated在窗口的生命周期里会发生多次。
ContentRendered事件只对窗口第一次完全呈现出来进行触发。
为了让一些事情能在所有内容都显示给用户之前马上执行,可以用Loaded事件;
为了让一些事情能在所有内容都显示给用户之后马上执行,可以用ContentRendered事件。
参考文章:
WPF窗体的生命周期 WPF中的窗口的生命周期