【发布时间】:2025-11-28 06:40:01
【问题描述】:
我正在设计一个字体列表,我在其中引用 Fonts.SystemFontFamilies,但我还想包含 3 种存在于我的 MyDllProject 项目中的自定义字体。首先我添加了 SystemFontFamilies,效果很好,然后我添加了我的自定义字体(Roboto、Abstractus 和 OpenSans)并将它们很好地添加到列表中,但它给了我前缀 ./#。所以,我想找到一种方法来显示字体的名称,就像 Abstractus、Roboto 和 Open Sans 一样。
comboBox的代码是
if( _cmbFontFamilies != null )
{
_cmbFontFamilies.ItemsSource = FontUtilities.Families.OrderBy( fontFamily => fontFamily.Source );
}
FontUtilities 的代码是
internal class FontUtilities
{
internal static IEnumerable<FontFamily> Families
{
get
{
foreach ( FontFamily font in Fonts.SystemFontFamilies)
{
yield return font;
}
foreach (FontFamily fontFamily in Fonts.GetFontFamilies(new
Uri("pack://application:,,,/MyDllProject ;Component/Resources/")))
{
yield return fontFamily;
}
}
}
}
【问题讨论】:
-
您能与 ComboboxList 共享 xaml 代码吗?
-
抱歉,已编辑,现在代码更清晰了
-
您需要只显示字体名称还是在您的应用程序中将选定的字体系列用于其他用途?
-
是的,改变字体家族的功能是一样的。所以,改名字是不够的,Source 必须在 SelectedValuePath 中,Name 必须在 DisplayValuePath 中,但是我不知道怎么做。
标签: c# xaml fonts font-family