0

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

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

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

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

4

3 回答 3

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}}" />
于 2011-12-05T13:36:49.380 回答
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);
于 2012-04-21T07:52:26.957 回答
0

为了实现我想要的,我必须执行以下操作:

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

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

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

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

于 2012-02-28T11:30:16.193 回答