可以使用以下代码访问Silverlight中的资源文件:
ResourceManager rm = new ResourceManager("MyLibraryNamespace.MyFolder.MyResources", Assembly.GetExecutingAssembly());
但是在我的应用程序中,这段代码不在应用程序本身,而是在Silverlight类库中,应用程序引用了它;将名称空间更改为“MyAppNamespace”只会生成错误。
如何从Silverlight类库中访问xap文件中的资源?
答案 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是我第一篇文章的路径。