小编典典

InitializeComponent() 有什么作用,它在 WPF 中是如何工作的?

all

有什么作用InitializeComponent(),它在 WPF 中是如何工作的?

一般来说首先,但我特别想知道构造顺序的血腥细节,以及当有附加属性时会发生什么。


阅读 190

收藏
2022-09-02

共1个答案

小编典典

调用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在部分生成的类中实现。

希望这可以帮助!

2022-09-02