Не удается получить доступ к ресурсу шрифта в библиотеке классов Silverlight - PullRequest
4 голосов
/ 25 февраля 2010

У меня достаточно большой проект 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 на Content, Embedded Resource и т. Д., Но все безрезультатно.

Итак, есть ли проблема с доступом к ресурсам шрифта из дочерней сборки, о которой я не знаю, или кто-нибудь успешно это сделал?

Моя долгосрочная потребность будет состоять в том, чтобы действительные пользовательские шрифты были сохранены в виде ресурсов в отдельной сборке .Application.FontLibrary, которая будет загружаться и кэшироваться по требованию, а для элементов управления XAML в проекте .Application.Views потребуется ссылаться на эту сборку FontLibrary, чтобы получить действительные шрифты. Я также попытался создать эту отдельную сборку библиотеки шрифтов и не могу получить шрифты из второй сборки.

В качестве дополнительной информации я также попробовал следующие подходы к ссылкам на шрифты:

<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" />

И несколько похожих вариантов с разными ссылками на сборки / подкаталогами / случайными точками с запятой.

А пока ничего не работает ... кто-нибудь ударил (и желательно решил)?

1 Ответ

1 голос
/ 18 мая 2010

У меня работает этот код:

... FontFamily="/(DLL);Component/(DIR-optional)/(Font_file)#(Font_name)"/> ...
...