ホーム > コンピュータ > C# > WPF in C#

ResourceManagerでリソースにアクセスする

ResourceManagerでリソースにアクセスする Accessing Resources with the ResourceManager

ResourceManager型は、既定で現在のスレッドのUICulture設定のリソースを読み込みます。 しかし、あなたは、同様に、特定のカルチャのResourceManagerを明示的に作成することができます。 ResourceManagerは、メモリにリソースを読み込んで、それぞれのResourceSetインスタンスをキャッシュに格納します。 それで、それらは、リソース・ストアから一度だけ読み込ます。 リソースは、明示的にアンロードするまで、あるいは、アプリケーション・ドメインがアンロードするまで、キャッシュに格納されます。

リソースにアクセスするために、あなたは、アプリケーションの中心となるアセンブリの1つで、 位置決めをされた具体的なResourceSetのために、ResourceManagerのインスタンスを作成します。 なぜなら、リソースは、再利用され、ResourceManagerは、一般的に、ResourceManagerインスタンスが、 staticと宣言されたResourceSetインスタンスを内部のキャッシュに格納します。:

public static ResourceManager ResGlobal = new
ResourceManager("WpfLocalization.Properties.Resources",
typeof(App).Assembly);

あなたは、続いて、このように、リソースにアクセスすることができます。:

string hello = ResGlobal.GetString("HelloWorld"); 
Bitmap bitmap = ResGlobal.GetObject("CountryFlag") as Bitmap;

リソースの設定は、リソースの完全な名前に対応する、文字に基づいたリソース・パスとして、 WpfLocalization.Properties.Resourcesのような、 コンストラクタで指定します。あなたは、同様に、リソースが読み込まれた、アセンブリを指定する必要があります。 必要に応じて、あなたは、同様に、具体的なカルチャを渡すことができます。 そして、パラメータが、省略される場合、例の中にあるように、現在のUICultureが、使用されます。

Visual Studio 2005以降では、同様に、厳格に型指定されたリソースクラスが作成されます。 それは、Resxファイルのリソースを厳格に型指定されたクラスにマッピングします。 それで、あなたは、リソースマネージャに、直接、アクセスする必要ありません。 これらのクラスは、あなたのために、基盤となる静的ResourceManagerインスタンスを管理します。 そして、それぞれのリソース・キーのための静的プロパティを公開します。 あなたが、MyResources.resxと呼ばれるリソース・ファイルを作成する場合、 Visual Studioは、それらのリソースにアクセスするために、 MyResources.designer.csとMyResourcesクラスで、厳格に型指定されたクラスを自動的に作成します。

厳格に型指定されたリソースを使用することは、未処理のResourceManager.GetString()を呼ぶより、 簡単です。それらが、Intellisenseで発見できるので、 そして、あなたが、有効なリソース・キーを参照していることを保証するために、コンパイル時の型検査を提供します。 次に示すは図は、厳格に型指定されたリソースを使用しています。:

// using WpfLocalization.Properties;
string hello = Resources.HelloWorld;
Bitmap bitmap = Resources.CountryFlag;
Bitmap bitmap2 = Resources.ResourceManager.GetObject("CountryFlag") as Bitmap;

リソースマネージャの厳格に型指定されたリソースは、リソースを読み込むために、常に、現在のUICultureを使用します。 それで、UICultureが、ランタイムで変更される場合、これは、すぐに反射されます。 あなたが、具体的なカルチャのためのリソースを取得したい場合、あなたは、直接、クラス上でResourceManagerプロパティにアクセスし、 明示的に、ResourceManagerのメソッドを使用することができます。:

MessageBox.Show(WpfLocalization.Properties.
Resources.ResourceManager.GetString("HelloWorld",
new CultureInfo("de-DE")));

既定では、あなたが、Visual Studioを使用して、プロジェクトにResxリソースを追加するとき、 内部のクラスが作成されます。WPFを取り扱うため、生成されたクラスが、internalよりもむしろpublicとしてマークされていることは、 重要です。それで、WPFは、厳格に型指定されたリソースで、XAML結合を使用することができます。特に、あなたは、既定のResxFileCodeGeneratorの代わりに、 PublicResxFileCodeGeneratorを使用するために、Figure 6で示すように、 これらの厳格に型指定されたクラスを生成するためにカスタム・ツールを確実に設定してください。

FIGURE 6:

厳格に型指定されたリソースに、WPFの結合を有効にするために、あなたは、internalクラスより、 むしろpublicを生成するために、リソースでPublicResxFileCodeGeneratorを使用することを確認します。

FIGURE 6

あなたが、ソースに結合しているXAMLに、厳格に型指定されたリソースを使用したい場合、 それぞれのプロパティは、同様に、publicである必要があります。あなたが、リソースを生成するために、 カスタム・ツールを使用しない場合、あなたは、Visual StudioのResxリソース・エディタで、それぞれのプロパティのスコープを変更することができます。 アクセス修飾子によって、ツールバーにドロップします。

厳格に型指定されたリソースは、明確に、WPFのResxリソースに結合する重要な機能です。これは、さらに、この白書の後で、Resx結合の実装を説明します。

  • 次のページ
  • 前のページ
  • 目次
  • 原文

    WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。 の和訳の目次です。地域設定の実装の参考にしてください。

    関連ファイル

    Copyright (C) 2011-2016 kukekko All Rights Reserved.
    kukekko@gmail.com
    ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
    「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
    inserted by FC2 system