当编译WPF应用程序时,Visual Studio有两个阶段的编译处理过程:
(1)将XAML编译成BAML
(2)用选择的语言为窗口创建一个部分类(Window1.g.cs形式)
部分类包含三部分内容:
(1)窗口中所有控件的字段(Name已赋值的控件会生成对应字段)
(2)当构造函数调用InitializeComponent()方法时,从程序集中加载BAML的代码来创建对象树。
(3)void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)函数代码负责将恰当的控件对象指定到各个字段以及连接所有事件处理程序;BAML解析器每次发现一个已命名的对象时就调用Connect()一次。
部分类不包含实例化和初始化控件代码,这项任务有WPF引擎在使用Application.LoadComponent()方法处理BAML时执行。