WPF自定义FontFamily来自程序集?

时间:2015-04-15 02:38:34

标签: c# .net wpf xaml fonts

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

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

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

我在项目中创建了一个'Resources'文件夹,并在那里复制了自定义字体。我将字体的'Build Action'设置为'Content','Copy to output Directory'设置为'Copy if newer'。

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

什么有效:

<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说我应该可以使用:

  

指定包含字体的文件夹的字符串以及字体系列名称。文件夹和字体系列名称由#字符分隔。文件夹引用可以是绝对的,也可以是相对的。例如,“自定义字体\ #My自定义字体”。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

放置文件字体参数,如&#34;资源&#34;和&#34;复制如果更新&#34;