原文
WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。地域設定の実装の参考にしてください。
関連ファイル
x:StaticリソースBindingと一緒に考える
Things to Consider with x:Static Resource Bindings
WPFに完全に固有な、静的なリソース結合を使用すると、簡単に動作します。 あなたが、既定のResxリソースに格納して貼り付けると、上手く動作します。そして、あなたは、ほとんどの場合、文字列を地域設定しています。 文字列の地域設定は、最も一般的な使い方です。 そして、それは、あなたが、行う必要がある場合、Resxリソースへのx:Static結合は、十分、優れています。
ここで、良い点と悪い点をまとめておきます。そして、代わりのリストの短かさは、あなたを妨げさせません。この仕組みの利点の一部は、その分かりやすさです。
良い点は以下の通りです。:
x:Staticは、組み込まれており、簡単に使用できます。
これは、この方法を使用する、最も説得力のある理由の1つです。 追加のツールや特別なマークアップ構文規則を使用する必要がありません。何も、設定する必要がありません。 あなたは、実際に、リソースクラスに名前空間を追加することができます。 そして、リソース結合を割り当てて開始します。そして、あなたは、開始する準備が整いました。構文は簡単です。 そして、結合が静的なので、それは効果的です。
x:Static結合は、コンパイラによって検証されます。
x:Static式は、コンパイルされる際に、評価されます。 それで、あなたが、無効な値を指定した場合、コンパイラはエラーを捕えて、式を格納するXAML要素に、指摘したエラーを表示します。
Resxリソースは、管理が簡単です。
Resxリソースは、適切にVisual Studioでサポートされているので、編集が簡単です。その上、Resxリソースを使用しているアプリケーションのために、 地域設定を容易にする多数のサードパーティ製のツールが、外部に存在します。そして、この基盤構造は、同様に、WPFでレバレッジをかけることができます。
短所は以下の通りです:
型コンバータのサポートが存在しません。
x:Static結合は、直接、結合しています。そして、このようにあなたが取得する値は、どんな型変換もなしで有効になる、結合した値です。 あなたのデータが格納されるResxファイルは、厳密に結合しているプロパティの特定の型と一致している必要があることを表しています。 Thickness、Brushや他のUI構造のような、簡単な結合が、複雑な型にはありません。 あなたは、文字列だけ、簡単に、効果的に結合することができます。他に何かへの結合は、困難です。
リソース・キーの地域設定可能なプロパティを手動でマッピングします。
なぜなら、ここには、リソースの同期のための、設計時のサポートがありません。要素プロパティにリソースをマッピングすることは、完全にあなた次第です。 そして、正しい結合式を適用します。あなたが、開発処理の間、勉強熱心でない限り、地域設定を必要とするリソースを見落とすことは、きわめて簡単です。 そして、接続処理は時間がかかって、面倒です。
Bindingは、XAMLで追加する必要があります。
結合は、XAMLデザイナーの非デザイナー機能です。そして、XAMLマークアップで入力する必要があります。 これは、あなたが、デザイナーで動作している間、マークアップ拡張の結合に接続するために、XAMLビューに切り替える必要があることを表しています。
依存関係プロパティ結合のみです。
XAML結合は、依存関係プロパティだけでサポートされています。 それで、あなたが、非依存関係プロパティ上で、地域設定された値を設定する必要がある場合、どんな結合方法も作業が進みません。 これは、重要なプロパティの、大きい問題であるべきありません。あなたは、依存関係プロパティに結合したい場合があります。 可能性がある例外は、サードパーティ製のコントロールやあなた独自のカスタム・コントロールです。UI要素のための依存関係プロパティを実装していません。
サテライト・アセンブリを使用する場合の設計時の問題
あなたが、ResxとBAMLリソースを混在させる場合、あなたは、リソースが含まれる既定のカルチャのためのサテライト・アセンブリに、 地域設定されたリソースを、格納することを余儀なくされます。 Microsoft Blendは、サテライト・アセンブリからリソースを読み込むことができません。 そして、このように、デザイナーは、結合を含む要素の描画に失敗します。
厳格に型指定されたResxリソースに結合します。
ここで、説明する結合は、Visual Studioで生成された、厳格に型指定されたクラスに結合しています。 そして、これらのクラスは、使用するResourceManagerをハードコードしています。 これは、あなたが、標準のResxリソース・マネージャを使用する結合を表しています。 そして、あなたは、強く型指定されたそれを提供し、結び付けます。 あなたが、データベースや他のカスタム・ストレージのような異なるリソースの貯蔵庫から、リソースにアクセスしたい場合、 あなたは、厳格に型指定されたクラス上で、ResourceManagerを上書きするために、簡単な方法がないのでできません。 大多数の地域設定が文字列の値に発生するので、ディール・ブレーカーは、必ずしも短所ではありません。 大部分の他のタイプのWPFのレイアウト・プロパティは、自動サイズ調整を通して、これらの必要な流動的なレイアウト・パラダイムで提供するために、取り除かれます。 それは、気持ちの良い結果を提供することができます。それは、それぞれのカルチャのために、ユーザー定義した適した解決法よりも、すべてのカルチャのために動作します。 管理可能な地域設定を保持するために使用できる場所で、単一のコードに基づいて、そして、すべてカルチャのためのレイアウトを達成するために試みることが通例です。
あなたが、文字列だけに興味がある場合、あなたは、厳格に型指定されたリソースを使用することができます。 そして、あなたは、動的にカルチャを変える必要はありません。厳格に型指定されたリソースのx:Static結合は、進む道です。