Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 4.0 从Silverlight类库访问应用程序中的resx_Silverlight 4.0_Resx_Xap - Fatal编程技术网

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

Silverlight 4.0 从Silverlight类库访问应用程序中的resx,silverlight-4.0,resx,xap,Silverlight 4.0,Resx,Xap,可以使用以下代码访问Silverlight中的资源文件: ResourceManager rm = new ResourceManager("MyLibraryNamespace.MyFolder.MyResources", Assembly.GetExecutingAssembly()); 然而,在我的应用程序中,这段代码并不在应用程序本身中,而是在Silverlight类库中,应用程序引用了它;将名称空间更改为“MyAppNamespace”只会产生错误 如何从Silverlight类库访

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

ResourceManager rm = new ResourceManager("MyLibraryNamespace.MyFolder.MyResources", Assembly.GetExecutingAssembly());
然而,在我的应用程序中,这段代码并不在应用程序本身中,而是在Silverlight类库中,应用程序引用了它;将名称空间更改为“MyAppNamespace”只会产生错误


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

这里有一个不错的视频:

诀窍是编写一个“代理”类,以便可以引用XAML中的字符串。发件人:

在XAML中(在静态资源中添加类之后):


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

var assembly = Application.Current.GetType().Assembly;
之后,我可以使用以下资源创建ResourceManager:

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

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

这很好,我也能做到这一点

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

var ast=assembly.FullName;
char[]定界=新的char[]{',};
string[]parts=ast.Split(定界);
var gResources=new System.Resources.ResourceManager(部件[0]+“此处的资源路径”,程序集);

您好,很抱歉没有具体说明。我可以通过绑定从XAML访问资源,我知道如何做到这一点。关键是,只有当我的代码在应用程序中时,我才能这样做。如果我把代码放在Silverlight类库中,我就不能再访问这些资源(它们仍然保留在应用程序中);我正在尝试使用ResourceManager ResourceManager=new ResourceManager(“/AppNamespace;component/Resources”,Assembly.getExecutionGassembly());但这也不行——事实上,这段代码甚至在应用程序中也不起作用。非常感谢Dario Solera,它以最简单的方式解决了我的问题。
var assembly = Application.Current.GetType().Assembly;
var rm = new System.Resources.ResourceManager(name, assembly);