Доступ к resx в приложении из библиотеки классов Silverlight - PullRequest
0 голосов
/ 05 декабря 2011

К файлам ресурсов в Silverlight можно получить доступ, используя код ниже:

ResourceManager rm = new ResourceManager("MyLibraryNamespace.MyFolder.MyResources", Assembly.GetExecutingAssembly());

Однако в моем приложении этот фрагмент кода находится не в самом приложении, а в библиотеке классов Silverlight, и приложение имеет ссылку на него; изменение пространства имен на «MyAppNamespace» просто приводит к ошибке.

Как получить доступ к ресурсам в файле xap из библиотеки классов Silverlight?

Ответы [ 3 ]

1 голос
/ 21 апреля 2012

Это хорошо, и я смог сделать то же самое.

В моем случае у меня есть одна библиотека, совместно используемая приложениями, поэтому я динамически извлекаю имя сборки:

var ast = assembly.FullName;
char[] delimit = new char[] { ',' };
string[] parts = ast.Split(delimit);
var gResources = new System.Resources.ResourceManager(parts[0]+"resource path here", assembly);
1 голос
/ 05 декабря 2011

Здесь есть хорошее видео: http://msdn.microsoft.com/en-us/hh336287

Хитрость в том, чтобы написать прокси-класс, чтобы вы могли ссылаться на строки из XAML.От MSDN :

public class LocalizedStrings {
  public LocalizedStrings() { }
  private static sdkGlobalizationCS.AppResources localizedResources = new sdkGlobalizationCS.AppResources();
  public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
}

И в XAML (после добавления класса в статические ресурсы):

<ListBoxItem Content="{Binding Path=LocalizedResources.LangRegionNameFrFR, Source={StaticResource LocalizedStrings}}" />
0 голосов
/ 28 февраля 2012

Чтобы добиться того, чего я хотел, мне нужно было сделать следующее:

var assembly = Application.Current.GetType().Assembly;

И после этого я могу создать ResourceManager с такими ресурсами:

var rm = new System.Resources.ResourceManager(name, assembly);

где name - путь из моего первого поста.

...