一尘不染

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

c#

InitializeComponent()它在WPF中起什么作用,以及如何工作?

通常,首先,但我特别想了解构造顺序的详细信息,以及在附加属性时会发生什么。


阅读 835

收藏
2020-05-19

共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实现。

希望这可以帮助!

2020-05-19