Xamarin Forms中FontFamily用OnPlatform报XLS0504错误的解决办法
解决Xamarin Forms 5.x中FontFamily使用OnPlatform的XLS0504错误
在Xamarin Forms 5.x版本中,FontFamily属性不再支持直接将OnPlatform作为子元素嵌套使用,需要改用属性语法或全局资源的方式实现平台适配,以下是两种可行解决方案:
方法1:使用属性式OnPlatform语法
直接在FontFamily属性中通过OnPlatform扩展标记指定各平台的字体值,示例代码如下:
<Button Text="" <!-- FontAwesome用户图标 --> FontFamily="{OnPlatform Android='FontAwesomeSolid.ttf#Font Awesome 5 Free Solid', iOS='FontAwesomeSolid', UWP='/Assets/FontAwesomeSolid.ttf#Font Awesome 5 Free Solid'}"/>
注意:请根据你实际导入的FontAwesome字体文件,调整各平台的文件名和内部字体名称。
方法2:定义全局字体资源(推荐)
在App.xaml中统一配置平台字体资源,避免重复编写适配代码:
<Application.Resources> <ResourceDictionary> <OnPlatform x:Key="FontAwesomeSolid" x:TypeArguments="x:String"> <On Platform="Android" Value="FontAwesomeSolid.ttf#Font Awesome 5 Free Solid"/> <On Platform="iOS" Value="FontAwesomeSolid"/> <On Platform="UWP" Value="/Assets/FontAwesomeSolid.ttf#Font Awesome 5 Free Solid"/> </OnPlatform> </ResourceDictionary> </Application.Resources>
之后在页面中直接引用该资源即可:
<Button Text="" FontFamily="{StaticResource FontAwesomeSolid}"/>
额外注意事项
- 确保字体文件已正确添加到各平台项目并配置生成操作:
- Android:将字体文件放入
Resources/font目录,设置生成操作为AndroidResource - iOS:将字体文件添加到项目,设置生成操作为
BundleResource,同时在Info.plist的Fonts provided by application项中添加字体文件名 - UWP:将字体文件放入
Assets目录,设置生成操作为Content
- Android:将字体文件放入
内容的提问来源于stack exchange,提问作者ZamrinJameel
相关产品推荐
相关产品推荐

