InitializeComponent()
它在WPF中起什么作用,以及如何工作?
总的来说,首先,但我特别想了解构造顺序的详细信息,以及附加属性时会发生什么。
InitializeComponent()
它在WPF中起什么作用,以及如何工作?
总的来说,首先,但我特别想了解构造顺序的详细信息,以及附加属性时会发生什么。
Answers:
的调用InitializeComponent()
(通常至少在Window
和的默认构造函数中UserControl
调用)实际上是对控件的部分类的方法调用(而不是像我最初期望的那样调用对象层次结构)。
此方法为正在加载的Window
/ 找到XAML的URI UserControl
,并将其传递给System.Windows.Application.LoadComponent()
静态方法。LoadComponent()
加载位于传入的URI中的XAML文件,并将其转换为XAML文件的根元素所指定的对象的实例。
更详细地,LoadComponent
创建的实例XamlParser
,并构建XAML的树。每个节点都由解析XamlParser.ProcessXamlNode()
。这被传递给BamlRecordWriter
班级。在此之后的一段时间,我对如何将BAML转换为对象有些迷惑,但这可能足以帮助您获得启发。
注意:有趣的InitializeComponent
是,是System.Windows.Markup.IComponentConnector
接口上的方法,在部分生成的类中实现Window
/ UserControl
实现。
希望这可以帮助!
查看代码也总是有帮助的。也就是说,您实际上可以通过执行以下操作来查看生成的子类(调用LoadComponent):
该YourClass .g.cs ...是生成的部分类的代码。同样,如果您打开它,则可以看到InitializeComponent方法及其如何调用LoadComponent ...等等。