C# VS2019 WPF.Net Core 3.1不显示资源字体

C# VS2019 WPF.Net Core 3.1不显示资源字体,c#,wpf,xaml,visual-studio-2019,.net-core-3.1,C#,Wpf,Xaml,Visual Studio 2019,.net Core 3.1,我几乎搜索了整个互联网来寻找我问题的答案,但不幸的是没有找到。 我正在开发WPF.NETCore3.1应用程序,我想在其中使用自定义字体。目前我在Visual Studio 2019社区16.5.5中工作 我在项目的/font文件夹中有很多.ttf文件 它们的属性设置正确:生成操作:资源和复制到输出目录:不复制 然后我创建了/Styles/Fonts.xaml文件,并将此代码放入其中: <ResourceDictionary xmlns="http://schemas.microsoft.

我几乎搜索了整个互联网来寻找我问题的答案,但不幸的是没有找到。 我正在开发WPF.NETCore3.1应用程序,我想在其中使用自定义字体。目前我在Visual Studio 2019社区16.5.5中工作

我在项目的
/font
文件夹中有很多
.ttf
文件

它们的属性设置正确:
生成操作:资源
复制到输出目录:不复制

然后我创建了
/Styles/Fonts.xaml
文件,并将此代码放入其中:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:GenoSoft.Word">

    <FontFamily x:Key="LatoThin">pack://application;,,,/Fonts/#Lato Thin</FontFamily>

</ResourceDictionary>
main window.xaml中,我使用的字体如下所示:

<TextBlock Text="Welcome, Friend!" FontFamily="{StaticResource LatoThin}"/>

但是设计器不会更改文本块的设计时外观。当我构建并运行应用程序时,字体在运行时正确显示,但在designer中不正确

  • 在.Net Framework 4.7.2中执行完全相同的操作会使设计器显示此字体
  • 在my
    C:\Windows\Fonts
    文件夹中安装此字体不会使StaticResource字体显示在designer中,但设置
    FontFamily=“Lato Thin”
    效果很好,但这不是一种方法
  • 使用字体作为内容也不起作用

如有任何建议,我将不胜感激。

因此。。。几天后,我设法解决了这个问题。正如我所见,在.Net内核中,在设计时还不支持包字体

但支持系统安装的字体。因此,我们需要在操作系统中安装字体,然后使用以下语法:

<FontFamily x:Key="LatoRegular">Lato Regular, pack://application;,,,/Fonts/#Lato Regular</FontFamily>
Lato-Regular,pack://application;,,,/字体/#Lato常规
这意味着:“如果存在,请使用系统字体库中的字体Lato Regular,否则请使用资源字体”

现在我们可以在designer中看到所需的自定义字体


注意:我没有任何信息表明,当您将其投入生产时,它会如何影响性能,因为用户很可能不会安装这种字体。我个人认为在这种环境中没有延迟/性能问题。

您需要注意的一点是:使用pack:符号的绝对URI。中的解决方案可能会给您一些帮助。
<FontFamily x:Key="LatoRegular">Lato Regular, pack://application;,,,/Fonts/#Lato Regular</FontFamily>