在WPF中以编程方式更改字体系列

6

我正在创建一个WPF应用程序。

我已经在我的解决方案中创建了一个文件夹,并且其中有一些字体。

如何以编程方式更改TextBlock的FontFamily


2
你尝试过什么来达到你想要的结果?你对问题进行的研究有什么发现?能否提供你尝试的代码?如何提出好问题期望的研究工作量如何创建一个最小、完整且可验证的示例可能有助于改善你的问题。 - peacetype
3个回答

12

XAML

<TextBlock 
  Name="textBlock"

  Background="AntiqueWhite" 
  Foreground="Navy" 

  FontFamily="Century Gothic"
  FontSize="12"
  FontStretch="UltraExpanded"
  FontStyle="Italic"
  FontWeight="UltraBold"

  LineHeight="Auto"
  Padding="5,10,5,10"
  TextAlignment="Center"
  TextWrapping="Wrap"

  Typography.NumeralStyle="OldStyle"
  Typography.SlashedZero="True"
>
  <Run Background="LightGreen">Text run 1.</Run>
  <LineBreak/><Run Background="LightBlue">Text run 2.</Run>
  <LineBreak/><Run Background="LightYellow">Text run 3.</Run>
</TextBlock>

后台代码

TextBlock textBlock = new TextBlock(new Run("A bit of text content..."));

textBlock.Background              = Brushes.AntiqueWhite;
textBlock.Foreground              = Brushes.Navy;

textBlock.FontFamily              = new FontFamily("Century Gothic");
textBlock.FontSize                = 12;
textBlock.FontStretch             = FontStretches.UltraExpanded;
textBlock.FontStyle               = FontStyles.Italic;
textBlock.FontWeight              = FontWeights.UltraBold;

textBlock.LineHeight              = Double.NaN;
textBlock.Padding                 = new Thickness(5, 10, 5, 10);
textBlock.TextAlignment           = TextAlignment.Center;
textBlock.TextWrapping            = TextWrapping.Wrap;

textBlock.Typography.NumeralStyle = FontNumeralStyle.OldStyle;
textBlock.Typography.SlashedZero  = true;

如果您想加载自定义字体

controlID.FontFamily = new FontFamily("file:///Font
 Full Path");

0

拿控件比如 TextBlock,然后使用以下代码设置其样式:

Style style = new Style(typeof(TextBlock));

然后使用资源添加一个setter,如下所示

style.Setters.Add(new Setter(TextBlock.FontFamilyProperty, this.FindResource("NameOfResource")));

最后将样式设置为控件...

myTextBlock.Style = style;

0

App.xaml:

<Application.Resources>
    <FontFamily x:Key="samim">/Resources/Fonts/samim.TTF#Samim</FontFamily>
</Application.Resources>

在您的窗口(或页面)代码中使用字体:
lblTitle.FontFamily = (FontFamily)FindResource("samim");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接