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

在.NET MAUI的FlyoutItem中使用FontAwesome图标失败求助

.NET MAUI Windows平台FlyoutItem显示FontAwesome图标解决方案

步骤1:确认字体文件的项目配置

  • 将FontAwesome的otf/ttf文件放入项目的Resources/Fonts目录(无此目录则新建)
  • 右键选中字体文件,设置Build Action为MauiFont,Copy to Output Directory设为Copy if newer

步骤2:确认字体注册代码

确保MauiProgram.cs中字体文件名与实际文件完全匹配,注册代码无需修改,保持如下即可:

var builder = MauiApp.CreateBuilder();
builder
  .UseSkiaSharp(true)
  .UseMauiApp<App>()
  .ConfigureFonts(fonts =>
  {
    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
    fonts.AddFont("FW-Regular-400.otf", "FontAwesomeRegular");
    fonts.AddFont("FWBrands-Regular-400.otf", "FontAwesomeBrands");
    fonts.AddFont("FW-Solid-900.otf", "FontAwesomeSolid");
  });

步骤3:修正XAML中的FontImageSource配置

核心问题说明:

  • Glyph不能直接写图标名称(如"user"),必须使用对应图标的Unicode转义字符
  • 建议显式指定图标颜色,避免因颜色与背景一致导致肉眼不可见

修正后的App.xaml代码:

<!-- Desktop/Tablet-->
<FlyoutItem Title="Home">
  <ShellContent ContentTemplate="{DataTemplate page:HomePage}">
    <ShellContent.Icon>
      <!-- f021为home图标的Unicode转义写法 -->
      <FontImageSource FontFamily="FontAwesomeSolid" 
                       Glyph="&#xf021;" 
                       Color="Black"/>
    </ShellContent.Icon>
  </ShellContent>
</FlyoutItem>
<FlyoutItem Title="Settings">
  <ShellContent ContentTemplate="{DataTemplate page:SettingsPage}">
    <ShellContent.Icon>
      <!-- user实心图标的Unicode为f007,转义后写法如下 -->
      <FontImageSource FontFamily="FontAwesomeSolid" 
                       Glyph="&#xf007;" 
                       Color="Black"/>
    </ShellContent.Icon>
  </ShellContent>
</FlyoutItem>

步骤4:Windows平台特殊兼容处理(若上述步骤无效)

Windows平台可能对字体别名识别存在偏差,此时改用字体的实际系统名称:

  1. 右键FontAwesome的otf文件,打开「属性」→「详细信息」,查看「标题」字段(例:Font Awesome 6 Solid)
  2. 修改XAML中的FontFamily值:
<FontImageSource FontFamily="Font Awesome 6 Solid" 
                 Glyph="&#xf007;" 
                 Color="Black"/>

图标Unicode获取方法

找到目标FontAwesome图标后,查看其详情页中的Unicode值,在XAML中以&#x{Unicode};的格式写入Glyph字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:11:27