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

如何在WPF中编程修改TextBlock的FontFamily(含自定义字体)

编程修改WPF TextBlock的FontFamily(自定义字体)

嘿,我来帮你搞定这个问题!首先得确保你的自定义字体文件配置正确,这是基础:先选中解决方案里Fonts文件夹下的字体文件,在属性面板里把生成操作设为Resource,这样字体就会嵌入到你的程序集里,不会丢。

接下来给你几种常用的编程方式:

1. 直接用相对路径加载

如果你的字体放在项目根目录下的Fonts文件夹里,直接用相对路径+字体名称就能搞定。注意这里的字体名称不是文件名,比如你的字体文件叫MyCoolFont.ttf,但字体本身的名称可能是My Cool Font——你可以右键字体文件,在“属性”里找到它的实际名称。

代码示例:

// 假设字体文件在Fonts文件夹,字体实际名称是"Custom Sans Serif"
textBlock.FontFamily = new FontFamily("./Fonts/#Custom Sans Serif");

2. 使用Pack URI加载(更可靠的嵌入资源方式)

如果你的字体是作为嵌入资源打包的,用Pack URI可以更明确地指定位置,避免路径问题。需要替换YourAssemblyName为你的程序集名称(就是项目的名称):

// 格式:pack://application:,,,/程序集名称;component/字体文件夹路径/
var fontUri = new Uri("pack://application:,,,/WpfAppDemo;component/Fonts/");
textBlock.FontFamily = new FontFamily(fontUri, "#Custom Sans Serif");

3. 从资源字典中引用(适合全局复用)

如果你已经在App.xaml或者某个资源字典里定义了字体资源,直接从资源里取更方便:

先在App.xaml里添加:

<Application.Resources>
    <FontFamily x:Key="CustomFont">./Fonts/#Custom Sans Serif</FontFamily>
</Application.Resources>

然后代码里调用:

textBlock.FontFamily = (FontFamily)Application.Current.Resources["CustomFont"];

小提示:

  • 要是你的字体有多个样式(比如粗体、斜体),记得对应不同的字体文件,然后通过FontWeight、FontStyle属性配合设置。
  • 不确定字体名称的话,可以双击字体文件打开,标题栏显示的就是它的实际名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:33:21