WPF中所有窗口的基类型都是System.Windows.Window。Window通常用于SDI窗口和对话框。Window在应用程序中除了一个设计用于托管顶级内容的控件外,就别无他物了。典型的,可以混合使用标记和代码来定义一个窗口。代码如下:
在xaml页:
<Window x:Class="WPFApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="This is a Window" Height="350" Width="525">
</Window>
在cs页面中:
namespace WPFApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
运行这段代码将产生一个最原始的窗口:
注意:这样一个无趣的窗口的生命周期也有好几个阶段:
- 构造器被调用
- Window.Initialized事件被触发
- Window.Activated事件被触发
- Window.Loaded事件被触发
- Window.ContentRendered事件被触发
- 用户和窗口进行交互
- Window.Closing事件被触发
- Window.Uloaded事件被触发
Window.Closed事件被触发
总结:
户在运行系统上的多个窗口中切换时,Activated和Deactivated(在窗口成为后台窗口时发生)在窗口的生命周期里会发生多次。ContentRendered事件只对窗口第一次完全呈现出来进行触发。为了让一些事情能在所有内容都显示给用户之前马上执行,可以用Loaded事件;为了让一些事情能在所有内容都显示给用户之后马上执行,可以用ContentRendered事件。