WPF - 添加自定义字体

时间:2008-12-11 05:21:13

标签: wpf fonts embedded-resource

我正在尝试在我的应用程序中添加自定义字体作为资源。 我在应用程序中有一个“CustomFont”目录,其中的所有字体都设置为“Resource”

<Window.Resources>
    <Style x:Key="Gotham-XLight">
        <Setter Property="TextElement.FontFamily" 
                Value="/CustomFonts;Component/#Gotham-XLight" />
    </Style>
</Window.Resources>

然后在我的TextBlock上我有:(在网格内)

<TextBlock x:Name="TimeTextBlock" Style="{DynamicResource Gotham-XLight}" 
           TextAlignment="Center" FontSize="25" FontWeight="Bold" 
           Foreground="White" Text="TextBlockTimer" 
           Margin="105,242.974,0,226.975" HorizontalAlignment="Left" 
           Width="221.919" />

但我没有看到人们说的字体。我做错了吗?

4 个答案:

答案 0 :(得分:19)

您可能需要检查字体名称,您需要指定字体名称而不是文件名称。

双击字体文件,它应显示“字体名称:”,这是您想要确定的样式。

答案 1 :(得分:6)

试试这个

<Window.Resources>
    <Style x:Key="Gotham-XLight">
        <Setter Property="TextElement.FontFamily" Value="CustomFonts/#Gotham-XLight" />
    </Style>
</Window.Resources>

另外,如果您不打算在运行时更改样式{StaticResource Gotham-XLight},那么性能会更高。

答案 2 :(得分:2)

在xaml中,我这样做了:

    <Button Grid.Column="1" Grid.RowSpan="2" Name="start" Margin="5" Click="start_Click">
        <TextBlock Name="test" FontFamily="pack://application:,,,/Y_Yoga;Component/Resources/#FontAwesome">&#xF04B;</TextBlock>
    </Button>

但是,我不知道#FontAwesome是否是字体的嵌入名称,还是我重命名.ttf文件的结果。

希望有所帮助!

答案 3 :(得分:0)

最新回复,但值得一提。要添加将在窗口中全局应用的自定义字体,您可以将其添加到csproj文件中,以将项目的Fonts文件夹中的字体作为资源包括在内。

 <ItemGroup>
    <Resource Include="Fonts\*.ttf" />
 </ItemGroup>

然后在XAML窗口中,可以在Window部分中指定FontFamily:

<Window x:Class="Namespace.MainWindow"
    ...
    FontFamily="/Fonts/#[FONT NAME]"
    Title="">
  <Grid>
    ...
  </Grid>
</Window>

我希望这可以对某人有所帮助,因为我花了一些时间来弄清楚。