WPF-添加自定义字体

问题描述 投票:15回答:4

我正在尝试将自定义字体作为资源添加到我的应用程序中。我在应用程序中有一个“ 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" />

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

wpf fonts embedded-resource
4个回答
19
投票

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

双击字体文件,它应该显示一个“字体名称:”,这是您要确保在样式中指定的名称。


6
投票

尝试一下

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

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


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文件的结果。

希望对您有所帮助!


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.