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

如何在Avalonia的ComboBox中添加字体?按文档操作未生效求助

Avalonia ComboBox加载系统字体不生效问题修复

按照Avalonia官方文档实现ComboBox加载系统字体,但运行后无效果,该实现逻辑和WPF差异较大,以下是问题代码及解决方法:

问题代码

XAML代码

<Window xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
    x:Class="AvaloniaAppTemplate.MainWindow"
    Title="AvaloniaAppTemplate">
<StackPanel>
    <ComboBox x:Name="fontComboBox"  SelectedIndex="0">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" FontFamily="{Binding}" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
   </ComboBox>
</StackPanel>

后台C#代码

var fontComboBox = this.Find<ComboBox>("fontComboBox");
fontComboBox.Items = FontManager.Current.GetInstalledFontFamilyNames().Select(x => new FontFamily(x));
fontComboBox.SelectedIndex = 0;

解决方法

1. 调整代码执行时机

将字体加载逻辑放在窗口的OnLoaded事件中执行,避免控件未完全初始化导致赋值无效:

protected override void OnLoaded(RoutedEventArgs e)
{
    base.OnLoaded(e);
    var fontComboBox = this.Find<ComboBox>("fontComboBox");
    // 指定获取常规字重的字体名称,确保返回有效字体
    var fontNames = FontManager.Current.GetInstalledFontFamilyNames(FontFamilyNamesKey.Regular);
    fontComboBox.Items = fontNames.Select(name => new FontFamily(name)).ToList();
    fontComboBox.SelectedIndex = 0;
}

2. 优化绑定逻辑(可选)

如果仍有问题,可显式指定FontFamily的绑定路径,避免潜在类型转换问题:

<TextBlock Text="{Binding Name}" FontFamily="{Binding Name}" />

3. 确认FontManager初始化(针对Avalonia 0.10+版本)

在Program.cs中确保正确配置FontManager:

public static AppBuilder BuildAvaloniaApp()
    => AppBuilder.Configure<App>()
        .UsePlatformDetect()
        .LogToTrace()
        .With(new FontManagerOptions
        {
            DefaultFamilyName = "Segoe UI"
        });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:15:15