当前位置:  开发笔记 > 编程语言 > 正文

InitializeComponent()做什么,它在WPF中如何工作?

如何解决《InitializeComponent()做什么,它在WPF中如何工作?》经验,为你挑选了2个好方法。

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

首先,我会特别感兴趣的是了解构造顺序的血腥细节,以及附加属性时会发生什么.



1> Brad Leach..:

到呼叫InitializeComponent()(其通常被称为中的至少默认构造WindowUserControl)实际上是一个方法调用,以局部类的控制(而不是呼叫了对象分层结构作为我第一预期)的.

此方法将一个URI定位到正在加载的Window/ 的XAML UserControl,并将其传递给System.Windows.Application.LoadComponent()静态方法.LoadComponent()加载位于传入的URI中的XAML文件,并将其转换为由XAML文件的根元素指定的对象的实例.

更详细地,LoadComponent创建一个实例XamlParser,并构建XAML的树.每个节点都由XamlParser.ProcessXamlNode().解析.这将传递给BamlRecordWriter类.在此之后的一段时间,我对BAML如何转换为对象感到有点迷失,但这可能足以帮助你走上启蒙之路.

注意:有趣的InitializeComponent是,它是System.Windows.Markup.IComponentConnector接口上的一个方法,在部分生成的类中实现Window/ UserControl实现.

希望这可以帮助!



2> cplotts..:

查看代码总是有帮助的.也就是说,您可以通过执行以下操作来实际查看生成的部分类(调用LoadComponent):

    转到您感兴趣的Visual Studio解决方案中的"解决方案资源管理器"窗格.

    解决方案资源管理器的工具栏中有一个标题为"显示所有文件"的按钮.切换该按钮.

    现在,展开obj文件夹,然后展开DebugRelease文件夹(或您正在构建的任何配置),您将看到一个名为YourClass .g.cs 的文件.

YourClass .g.cs ...是生成的部分类的代码.同样,如果你打开它,你可以看到InitializeComponent方法以及它如何调用LoadComponent ......等等.


请注意,您可以通过右键单击构造函数中的方法调用并选择"转到定义"来一步完成此操作.
啊,那是对的......忘掉了.这样容易多了.好吧,至少你知道它是如何包含在项目中的.笑容.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有