XAML报错找不到App.xaml中全局声明的Style资源原因问询
Xamarin.Forms全局样式找不到问题排查方案
可能成因
- App.xaml生成配置异常:App.xaml默认生成操作应为嵌入的资源,若被误修改会导致资源字典未被正确加载到应用全局上下文
- 启动时加载的Application类错误:各平台启动代码中加载的不是你定义的
Fitness_App.App类,导致全局资源未被初始化 - App类前后端声明不匹配:App.xaml中
x:Class="Fitness_App.App"与App.xaml.cs的命名空间、类名不一致,会导致资源字典和App实例绑定失败 - 资源访问时机错误:在页面
InitializeComponent()方法执行前访问资源,或是用StaticResource访问运行时才加载的资源,都会触发找不到的报错 - IDE缓存异常:设计时的缓存过期会导致IDE误报资源不存在,实际运行时功能正常
解决步骤
- 核对App.xaml文件属性:右键App.xaml打开属性面板,确认生成操作是
Embedded Resource,自定义工具字段值为MSBuild:UpdateDesignTimeXaml - 校验App类一致性:打开App.xaml.cs,确认其命名空间为
Fitness_App、类名为App,且构造函数中没有清空Application.Current.Resources的逻辑 - 检查平台启动代码:
- Android项目MainActivity中
LoadApplication(new App());加载的是Fitness_App.App实例 - iOS项目AppDelegate中
LoadApplication(new App());确认加载正确的App类
- Android项目MainActivity中
- 调整资源引用逻辑:先尝试将引用改为
{DynamicResource WorkoutStyle}测试,若可正常加载则说明是静态资源加载时机问题,确认引用样式的页面构造函数中InitializeComponent()是第一行执行的代码 - 清理重建项目:删除解决方案下所有项目的bin、obj文件夹,重启IDE后重新编译,可解决绝大多数缓存导致的报错
内容的提问来源于stack exchange,提问作者Cosmin Andrei
相关产品推荐
相关产品推荐

