app.xaml找不到InitializeComponent方法

发布时间 2023-05-05 15:35:01作者: x_amos

报错内容

"App" 未包含 "InitializeComponent" 的定义,并且找不到可接受第一个 "App" 类型参数的可访问扩展方法"InitializeComponent"(是否缺少 using 指令或程序集引用?)

两种情况

1.app.xaml的x:class的内容写错了

需要将app.xaml的命名空间和app.xaml.cs的命名空间对应上

2.app.xaml的文件属性错误

默认情况下app.xaml的属性是 ApplicationDefinition(应用程序定义),代表是 wpf 程序的入口,如果将应用程序的入口写到其他地方,需要将此文件的属性修改成 page(页),否则或出现找不到 InitializeComponent 方法的问题。

InitializeComponent的作用

本质上,InitializeComponent() 方法的所有工作就是调用 System.Windows.Application 类的LoadComponent() 方法。LoadComponent() 方法是从程序集中提取 BAML,并使用它构造用户界面。当解析BAML时,它会创建每个控件对象,设置其属性,并关联所有事件处理程序。

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

更详细地,LoadComponent创建的实例XamlParser,并构建XAML的树。每个节点都由解析XamlParser.ProcessXamlNode()。这被传递给BamlRecordWriter班级。