从Silverlight类库访问应用程序中的resx

时间:2011-12-05 11:50:21

标签: silverlight-4.0 resx xap

可以使用以下代码访问Silverlight中的资源文件:

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

但是在我的应用程序中,这段代码不在应用程序本身,而是在Silverlight类库中,应用程序引用了它;将名称空间更改为“MyAppNamespace”只会生成错误。

如何从Silverlight类库中访问xap文件中的资源?

3 个答案:

答案 0 :(得分:1)

这里有一个不错的视频: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}}" />

答案 1 :(得分:1)

这很好,我也可以这样做。

在我的情况下,我在应用程序之间共享相同的库,因此我动态提取程序集的名称:

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);

答案 2 :(得分:0)

为了实现我想要的目标,我必须做到以下几点:

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

之后我可以使用以下资源创建ResourceManager:

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

其中name是我第一篇文章的路径。