我有一个相当大的Silveright 3.0项目,我在从其中一个程序集中访问几个自定义字体资源时遇到问题。
我有一个有效的测试解决方案,我在其中添加了一个自定义字体作为资源,可以使用以下方法从XAML访问它:
<TextBlock Text="Test" FontFamily="FontName.ttf#Font Name" />
测试解决方案包含 TestProject.Application 和 TestProject.Application.Web 项目,显然在TestProject.Application项目中有所有的乐趣和游戏
然而,当我在我的主解决方案中尝试这个时,字体拒绝显示在正确的类型面(而是以默认字体显示)。在测试解决方案和主解决方案之间将字体添加到项目中的方式没有区别,并且XAML是相同的。
但是,存在解决方案布局差异。在主要解决方案中,除了拥有 MainApp.Application 和 MainApp.Application.Web 项目外,我还有一个 MainApp.Application.ViewModel 项目和 MainApp.Application.Views 项目,XAML的问题部分是MainApp.Application.Views项目(不是像测试解决方案那样的.Application项目)。
我已经尝试将字体放入.Application或.Application.Views项目,尝试将Build Action更改为内容,嵌入式资源等都无济于事。
那么,从子程序集访问我不知道的字体资源是否有问题,或者有没有人成功完成此操作?
我的长期需求是将有效的自定义字体作为资源存储在单独的.Application.FontLibrary程序集中,该程序集将按需下载和缓存,并且.Application.Views项目中的XAML控件将需要引用此FontLibrary程序集以获取有效字体。我也试过xcreating这个单独的字体库程序集,我似乎无法从第二个程序集中获取字体。
作为一些其他信息,我还尝试了以下字体引用方法:
<TextBlock Text="Test" FontFamily="/FontName.ttf#Font Name" />
<TextBlock Text="Test" FontFamily="pack:application,,,/FontName.ttf#Font Name" />
<TextBlock Text="Test" FontFamily="pack:application,,,/MainApp.Application.Views;/FontName.ttf#Font Name" />
<TextBlock Text="Test" FontFamily="pack:application,,,/MainApp.Application.Views;component/FontName.ttf#Font Name" />
以及一些具有不同汇编引用/子目录/随机半冒号的类似变体。
到目前为止没有任何作用......任何人都打击了这个(并且最好解决了它)?
答案 0 :(得分:1)
此代码适用于我:
... FontFamily="/(DLL);Component/(DIR-optional)/(Font_file)#(Font_name)"/> ...