3

シェルウィンドウといくつかのモジュールを持つ複合アプリケーションがあり、各モジュールは MEF (Microsfot Prism) を使用してシェルにロードされます。シェル自体にはデフォルトのリソース ファイル (Resource.resx) があり、Localilzation をサポートするために他の言語 (Resource.ar-SA.resx など) にも対応しています。

  • Xamlの場合:使用しましたx:Static Resource.KeyName
  • C#コードでは:GetString(keyName, culture)必要な文字列を取得するために使用していました。

ローカリゼーションをサポートするために、システムの現在のカルチャを取得し、必要な Resx ファイルをロードするコード行を追加しました。現在の文化を設定するため。

Resource.Culture = 
    new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name); 

App.Xaml.cs で

これらはすべて完全に正常に機能します。

同様に、MEF を使用してロードされる各モジュールには、前述のようにリソース ファイルがあります。ただし、モジュールの場合、特定の言語ファイルの Xaml で定義されたリソース キーが機能しません。デフォルト(Resource.Resx)ファイルから常に値を取得します。ただし、ResourceManager クラスを使用するコードで使用されるキーはすべて正常に機能します。

4

1 に答える 1

0

すべてのリソースを「インフラストラクチャ」プロジェクトに保持することになったので、すべてのリソースが 1 つの場所から読み込まれ、単純になりました。

私のxamlバインディングは次のようになります

resx クラスへの参照を取得します。

xmlns:resources="clr-namespace:Infrastructure.resources;assembly=Infrastructure"

テキストを取得する

Content="{x:Static resources:Resources.Activity_Regarding}"

あなたはすでにこれを行っているかもしれませんが、私にはわかりません。使用する resx と名前空間が一致していることを確認する必要があります。したがって、モジュールの名前空間。

于 2013-02-08T16:04:54.433 に答える