我正在构建一个使用ResourceDictionaries
其他程序集的应用程序,但我在使用字体时遇到了问题。
有一个名为MyFontAssembly的程序集,它将字体以及对它们的引用存储为ResourceDictionary
. 它的结构如下所示:
MyFontAssembly
- FontDictionary.xaml - (stores references to fonts)
- Fonts
- FontA.ttf
- FontB.ttf
...
还有另一个程序集存储ResourceDictionaries
样式控件,它称为MyStylesAssembly。然后将来自 MyStylesAssembly 的 ResourceDictionaries 合并到应用程序的 App.xaml 中,以提供可重用的样式。
问题是我的样式确实识别字体资源(代码没有崩溃,因为它无法通过它的键找到资源),但看起来存储为 ttf 文件的字体没有被应用。
我在我的 中尝试了以下FontDictionary.xaml
方法,但都不起作用:
<FontFamily x:Key="MyFontKey">Fonts/#MyFontName</FontFamily>
<FontFamily x:Key="MyFontKey">pack://application:,,,/MyFontAssemblyName;Component/Fonts/#MyFontName</FontFamily>
<FontFamily x:Key="MyFontKey">/MyFontAssemblyName;Component/Fonts/#MyFontName</FontFamily>
<FontFamily x:Key="MyFontKey">pack://application:,,,/Fonts/#MyFontName</FontFamily>
笔记:
- 我确信我的字体形式 ttf 可以正常工作并且命名正确。我
<FontFamily x:Key="MyFontKey">Fonts/#MyFontName</FontFamily>
在具有相同结构的单个 exe 项目中使用实现,一切都很好,当我将实现拆分为几个程序集时出现问题,就像我在重构期间描述的那样。 MyFontAssembly
已正确合并MyStylesAssembly
。我只是在这里用那个名字来称呼它,在实际代码中它还有一些ResourceDictionaries
被MyStylesAssembly
. 问题似乎只是<FontFamily>
标签无法识别 ttf 文件。MyFontAssembly
并且MyStylesAssembly
是类型的项目,ClassLibrary
并且不包含除 in 以外的任何代码ResourceDictionaries
(没有类或代码后面)