Xamarin.Forms中XAML使用资源文件遇Texts类型未找到错误
解决Xamarin.Forms XAML中找不到RESX
Texts类型的问题 嘿,我之前也踩过这个坑!找不到Texts类型的问题几乎都和命名空间配置、资源文件生成设置有关,咱们一步步来排查:
1. 先检查RESX文件的核心配置(必看!)
打开解决方案资源管理器,找到你的Texts.resx文件,右键选择「属性」,确认两个关键设置:
- 生成操作:必须设为
Embedded resource - 自定义工具:一定要选
PublicResXFileCodeGenerator(默认的ResXFileCodeGenerator生成的是internal类,XAML根本访问不到!)
接着打开自动生成的Texts.Designer.cs文件,顶部的命名空间要记下来,比如namespace MyApp.Resources;,后面XAML引用要用到这个。
2. 在XAML中正确引用资源命名空间
在你的页面根元素(比如ContentPage)里添加命名空间声明,格式如下:
xmlns:resources="clr-namespace:你的资源命名空间;assembly=你的项目程序集名称"
举个实际例子:如果我的资源在MyApp.Resources命名空间,项目叫MyApp,那就是:
xmlns:resources="clr-namespace:MyApp.Resources;assembly=MyApp"
⚠️ 注意:程序集名称就是你的项目名,大小写要完全匹配!
3. 验证Texts类的可访问性
先在C#代码里试试调用Texts.你的资源键,比如var test = Texts.Welcome;:
- 如果代码里也找不到,那肯定是资源文件生成的问题,回去重新检查第1步的自定义工具和生成操作
- 如果代码里能访问,那就是XAML的命名空间引用错了,再核对一遍命名空间和程序集名称
4. 清理缓存重建项目
VS有时候会抽风缓存旧文件,试试这几步:
- 右键解决方案 → 清理解决方案
- 右键解决方案 → 重建解决方案
- 实在不行就手动删除项目下的
bin和obj文件夹,再重新编译
5. 正确使用资源的示例
假设一切配置正确,XAML里调用资源的写法是这样的:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:resources="clr-namespace:MyApp.Resources;assembly=MyApp" x:Class="MyApp.Views.HomePage"> <!-- 用x:Static绑定资源 --> <Label Text="{x:Static resources:Texts.WelcomeMessage}" /> </ContentPage>
按照这个顺序排查,90%的情况都能解决问题!
内容的提问来源于stack exchange,提问作者Bjorn Fontaine
相关产品推荐
相关产品推荐

