【问题标题】:Access resx in application from Silverlight class library从 Silverlight 类库访问应用程序中的 resx
【发布时间】:2011-12-05 11:50:20
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: silverlight-4.0 resx xap


    【解决方案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}}" />
    

    【讨论】:

    • 您好,很抱歉没有具体说明。我可以通过绑定从我的 XAML 访问资源,我知道该怎么做。关键是我只能在我的代码在应用程序中时才能做到这一点。如果我将该代码放在 Silverlight 类库中,我将无法再访问这些资源(仍保留在应用程序中);我正在尝试使用 ResourceManager resourceManager = new ResourceManager("/AppNamespace;component/Resources", Assembly.GetExecutingAssembly());但这也不行——事实上,这段代码甚至在应用程序中也不起作用。
    • 非常感谢 Dario Solera,它以最简单的方式解决了我的问题。
    【解决方案2】:

    这很好,我也能做到。

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 2010-11-22
        • 1970-01-01
        相关资源
        最近更新 更多