【发布时间】:2016-03-31 12:31:18
【问题描述】:
我想在我的 WPF 应用程序上导入自定义字体,以便它们无需客户端安装即可工作。
到目前为止我找到的所有答案都在 XAML 中,我只想在 C# 中进行。
我的字体在 Resources/Fonts/ 中。
我已经试过了:
Fonts.GetFontFamilies(new Uri("pack://application:,,,/Resources/Fonts/#"));
但是没有用。
【问题讨论】:
我想在我的 WPF 应用程序上导入自定义字体,以便它们无需客户端安装即可工作。
到目前为止我找到的所有答案都在 XAML 中,我只想在 C# 中进行。
我的字体在 Resources/Fonts/ 中。
我已经试过了:
Fonts.GetFontFamilies(new Uri("pack://application:,,,/Resources/Fonts/#"));
但是没有用。
【问题讨论】:
我做了所有 bluetoothfx 说的事情,但还是没用。
然后我将字体的 Build 操作(它是 Content)更改为 Embedded Resource,并且它起作用了。资源也适合我。
还是谢谢。
【讨论】:
我认为你的工作方式行不通。
首先创建一个名为 fonts 的文件夹,然后将字体添加到您的项目中,将其 Build Action 更改为 Content。
现在您需要找到字体的内部名称(真实名称)而不是字体文件名。打开字体文件就可以拥有了,就可以在上面看到了。
现在编辑 App.xaml
<Application.resources>
<style x:key="MYFONT_INTERNAL_NAME">
<setter property="TextElement.FontFamily"
value="pack://application:,,,/fonts/#MYFONT_INTERNAL_NAME" />
</style>
现在在你的代码中使用它:
<TextBlock Style="{StaticResource MYFONT_INTERNAL_NAME}" FontSize="16" Text="Font Style" />
要了解更多请在此处搜索: http://www.alteridem.net/2014/02/24/custom-fonts-in-wpf-applications/
【讨论】:
<Application.Resources> <Style x:Key="Lato Light"> <Setter Property="TextElement.FontFamily" Value="pack://application:,,,/fonts/#Lato Light"/> </Style> </Application.Resources>