我正在构建使用另一个程序集的ResourceDictionaries
的应用程序,并且遇到使用字体的问题。XAML - 使用来自另一个程序集的资源字典中的字体
有一个名为的程序集,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工作和正确命名。我在具有相同结构的单个exe项目中使用了
<FontFamily x:Key="MyFontKey">Fonts/#MyFontName</FontFamily>
实现,并且一切都很好,当我将实现拆分为几个程序集时,就像我所描述的那样,在重构期间出现问题。 MyFontAssembly
正确合并在MyStylesAssembly
中。我只是在这里用这个名称来称呼它,在实际的代码中,它还有一些ResourceDictionaries
,它们被MyStylesAssembly
正确使用。这个问题似乎只与<FontFamily>
标签不能识别ttf文件。MyFontAssembly
和MyStylesAssembly
是tyleClassLibrary
的项目和不包含比其他ResourceDictionaries
任何代码(没有类或后面代码)
你使用了正确的refrence。如果不工作,需要引用XAML URI包文档约定 – Ramankingdom
我很可能不使用正确的方式来引用字体,但我不知道什么是正确的方式来做到这一点(这是我的问题,在这里)。 –
更新示例 – Ramankingdom