在.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="" Color="Black"/> </ShellContent.Icon> </ShellContent> </FlyoutItem> <FlyoutItem Title="Settings"> <ShellContent ContentTemplate="{DataTemplate page:SettingsPage}"> <ShellContent.Icon> <!-- user实心图标的Unicode为f007,转义后写法如下 --> <FontImageSource FontFamily="FontAwesomeSolid" Glyph="" Color="Black"/> </ShellContent.Icon> </ShellContent> </FlyoutItem>
步骤4:Windows平台特殊兼容处理(若上述步骤无效)
Windows平台可能对字体别名识别存在偏差,此时改用字体的实际系统名称:
- 右键FontAwesome的otf文件,打开「属性」→「详细信息」,查看「标题」字段(例:
Font Awesome 6 Solid) - 修改XAML中的FontFamily值:
<FontImageSource FontFamily="Font Awesome 6 Solid" Glyph="" Color="Black"/>
图标Unicode获取方法
找到目标FontAwesome图标后,查看其详情页中的Unicode值,在XAML中以&#x{Unicode};的格式写入Glyph字段即可。
内容的提问来源于stack exchange,提问作者10101
相关产品推荐
相关产品推荐

