如何在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
相关产品推荐
相关产品推荐

