原文
WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。地域設定の実装の参考にしてください。
関連ファイル
Image ControlにResx画像リソースを割り当てる
Assigning a Resx Image Resource to an Image Control
あなたが、アプリケーションのフォルダに格納されている、ゆるい、あるいは、コンパイルされたXAMLリソースよりもむしろ、Resxリソースに画像を保存する場合、 画像の読み込みに関係する、わずかな余分の努力があります。そして、それを読んで、明示的に画像コントロールに入れます。 なぜ、あなたが、埋め込まれたファイル・リソースとして、実際に、XAMLリソースを格納することができるとき、 あなたは、Resx ResourceSetの内側に、画像を格納することを望むのでしょうか?WPFのファイル・リソースは、 実際に、標準ファイル・リソースに似ています。どんな他のプロジェクトでも、地域設定可能ではありません。リソース・ストリームとして、 それらは埋め込まれていますが、それらに関連した、地域設定情報がありません。 あなたが、たとえば、フラグのような画像を地域設定する必要がある場合、 あなたは、更に、Resx ResourceSetに基づく画像リソースを使用する必要があります。
残念ながら、WPFは、Bitmap画像で直接動作することを好みません。そして、代わりに、画像ソースに画像の変換を必要とします。 WPFは、URIから、あるいは、ストリームからいくつかの操作で、画像リソースを読み込むことを好みます。 それは、それをする必要があるものより、さらに複雑な普通のBitmapを読み込む処理をします。例えば、 あなたが、LocalizationInfoRes.CountryFlagにリソースに格納される厳格に型指定されたBitmap持っている場合、 ここに、あなたが、Image.Sourceプロパティに、このビットマップを読み込む方法があります。:
if (this.IsInitialized)
{
MemoryStream ms = new MemoryStream();
LocalizationInfoRes.CountryFlag.Save(ms, ImageFormat.Jpeg);
ms.Position = 0;
this.imgFlag.BeginInit();
this.imgFlag.Source = BitmapFrame.Create(ms);
this.imgFlag.EndInit();
ms.Close();
}
このコードが、メイン・ドキュメントが初期化されたあとにのみ、実行されることに注意します。 このような原因で、画像は、読み込まれず、警告なしで処理に失敗します。 Bitmapインスタンスを読み込むためのコツは、BitmapFrameクラスを使用することです。 それは、ストリームから画像を読むことを可能にします。 例は、Bitmapを使用して、MemoryStreamに書き込みむことを示します。 そして、その次に、BitmapFrame.Create()へ入力されるように、そのストリームを指定します。