InitializeComponent()在WPF中是做什么的,它是如何工作的?
InitializeComponent()在WPF中是做什么的,它是如何工作的?
在WPF中,InitializeComponent()
是什么以及它如何工作?
总的来说,我特别想知道构造顺序的细节,以及当存在附加属性时会发生什么。
admin 更改状态以发布 2023年5月24日
InitializeComponent()
的调用(通常在至少Window
和UserControl
的默认构造函数中调用),实际上是对控件的子类的部分类的方法调用(而不是我最初期待的对象层次结构调用)。
该方法查找正在加载的Window
/ UserControl
的XAML的URI,并将其传递给System.Windows.Application.LoadComponent()
静态方法。 LoadComponent()
会加载位于传入URI位置的XAML文件,并将其转换为由XAML文件的根元素指定的对象的实例。
更详细地说,LoadComponent
创建一个XamlParser
实例,并构建XAML树。每个节点由XamlParser.ProcessXamlNode()
解析。这会传递给BamlRecordWriter
类。在此之后的某个时间,我会在如何将BAML转换为对象方面有些迷失,但这可能足以帮助您在通向启蒙之路上前行。
注意:有趣的是,InitializeComponent
是System.Windows.Markup.IComponentConnector
接口上的一个方法,Window
/ UserControl
在生成的子类中实现该接口的部分类。