【问题标题】:VS2019 WPF .Net Core 3.1 not displaying resource fontVS2019 WPF .Net Core 3.1 不显示资源字体
【发布时间】:2020-05-17 04:05:45
【问题描述】:

我几乎在整个互联网上搜索了我的问题的答案,但很遗憾没有找到。 我正在开发 WPF .Net Core 3.1 应用程序,我想在其中使用自定义字体。目前我在 Visual Studio 2019 Community 16.5.5 工作

我有很多 .ttf 文件位于项目的 /Fonts 文件夹中。

它们的属性设置正确:Build Action: ResourceCopy to Output Directory: Do not copy

然后我创建了/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>

App.xaml我添加了合并字典:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles/Fonts.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

MainWindow.xaml我使用的字体如下:

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

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

  • 在 .Net Framework 4.7.2 中执行完全相同的操作会使设计器显示此字体,
  • 在我的 C:\Windows\Fonts 文件夹中安装此字体不会使 StaticResource 字体出现在设计器中,但设置 FontFamily="Lato Thin" 效果很好,但这不是一个可行的方法,
  • 将字体用作Content 也不起作用

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

【问题讨论】:

标签: c# wpf xaml visual-studio-2019 .net-core-3.1


【解决方案1】:

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

支持系统安装的字体。所以我们需要在操作系统中安装我们的字体,然后使用这个语法:

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

这意味着:“如果存在,则使用系统字体库中的字体 Lato Regular,否则使用资源字体”。

现在我们可以在设计器中看到我们想要的自定义字体了。


注意:我不知道当您将其用于生产时它如何影响性能,用户很可能不会安装此字体。我个人在这种环境中没有观察到延迟/性能问题。

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多