c# - 来自程序集的 WPF 自定义 FontFamily?

标签 c# .net wpf xaml fonts

我有一个为 WPF 应用程序定义样式和一些控件的程序集。在此程序集中,我有一个 ResourceDictionary,它指定程序集中其他控件和样式使用的“默认字体”。

<FontFamily x:Key="DefaultFontFamily">Segoe UI</FontFamily>
<sys:Double x:Key="DefaultFontSize">15</sys:Double>

我想做的是将 DefaultFontFamily 更改为与程序集链接(而不是嵌入)的自定义字体。

我在项目中创建了一个“资源”文件夹,并将自定义字体复制到其中。我已将字体的“构建操作”设置为“内容”,并将“复制到输出目录”设置为“如果较新则复制”。

该项目是包含另一个使用程序集中样式的项目的解决方案的一部分,因此在构建解决方案时,会按预期复制字体。但我似乎无法指定正确的文件夹来引用字体。

什么有效:

<FontFamily x:Key="DefaultFontFamily">C:\code\Solution\Project\bin\Debug\Resources\Lobster-Regular.ttf#Lobster</FontFamily>
<FontFamily x:Key="DefaultFontFamily">file:///c:/code/Solution/Project/bin/Debug/Resources/Lobster-Regular.ttf#Lobster</FontFamily>

这里的“Project”是引用样式程序集的启动(可执行)项目的名称。

什么不起作用:

<FontFamily x:Key="DefaultFontFamily">\Resources\Lobster-Regular.ttf#Lobster</FontFamily>
<FontFamily x:Key="DefaultFontFamily">.\Resources\Lobster-Regular.ttf#Lobster</FontFamily>
<FontFamily x:Key="DefaultFontFamily">/Resources/#Lobster</FontFamily>
<FontFamily x:Key="DefaultFontFamily">./Resources/#Lobster</FontFamily>

我还尝试将字体的内容设置为“资源”和“嵌入资源”,并尝试了以下操作:

<FontFamily x:Key="DefaultFontFamily">pack://application:,,,/Resources/Lobster.ttf#Lobster</FontFamily>

这也不起作用。 documentation说我应该能够使用:

A string specifying a folder containing the font, along with a font family name. The folder and font family name are delimited by a # character. The folder reference may be absolute, or relative. For example, "Custom Fonts\#My Custom Font".

我做错了什么?

最佳答案

输入文件字体参数,例如“资源”和“如果较新则复制”

关于c# - 来自程序集的 WPF 自定义 FontFamily?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640679/

相关文章:

c# - XML 字符串到 C# 中的 DataTable

c# - 如何使用鼠标在 WPF 中创建左右滑动?

c# - 在 WinForms 上使用 TPL 进行并行编程

c# - 如何用包装控件填充宽度?

c# - C#中的委托(delegate)和继承

c# - 使用 WCF 实现观察者模式

c# - 单声道中的异步 WCF 调用陷入无限循环

c# - MySql 数据库的连接字符串

c# - 如何使用 GridView 进行 foreach

c# - 需要 Linq 左连接语法更正