【发布时间】:2020-05-17 04:05:45
【问题描述】:
我几乎在整个互联网上搜索了我的问题的答案,但很遗憾没有找到。 我正在开发 WPF .Net Core 3.1 应用程序,我想在其中使用自定义字体。目前我在 Visual Studio 2019 Community 16.5.5 工作
我有很多 .ttf 文件位于项目的 /Fonts 文件夹中。
它们的属性设置正确:Build Action: Resource 和 Copy 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也不起作用
如果有任何建议,我将不胜感激。
【问题讨论】:
-
指向Limitations on Font Usage需要注意:绝对URI使用pack:记法。 here中的解决方案或许能给你一些帮助。
标签: c# wpf xaml visual-studio-2019 .net-core-3.1