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 に答える