You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms中FontFamily用OnPlatform报XLS0504错误的解决办法

解决Xamarin Forms 5.x中FontFamily使用OnPlatform的XLS0504错误

在Xamarin Forms 5.x版本中,FontFamily属性不再支持直接将OnPlatform作为子元素嵌套使用,需要改用属性语法或全局资源的方式实现平台适配,以下是两种可行解决方案:

方法1:使用属性式OnPlatform语法

直接在FontFamily属性中通过OnPlatform扩展标记指定各平台的字体值,示例代码如下:

<Button Text="&#xf007;" <!-- 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="&#xf007;" FontFamily="{StaticResource FontAwesomeSolid}"/>

额外注意事项

  • 确保字体文件已正确添加到各平台项目并配置生成操作:
    • Android:将字体文件放入Resources/font目录,设置生成操作为AndroidResource
    • iOS:将字体文件添加到项目,设置生成操作为BundleResource,同时在Info.plist的Fonts provided by application项中添加字体文件名
    • UWP:将字体文件放入Assets目录,设置生成操作为Content

内容的提问来源于stack exchange,提问作者ZamrinJameel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:25:39