コントロールのカルチャを明示的に制御して、リソース(.resx)/カルチャの値を取得するように設定できますか?WPFリソース:個々のコントロールの明示的なローカライゼーション
「en-US」となるグローバルアプリケーションカルチャが、「sv-SE」にいくつかのコントロールを追加したいとします。私のプロジェクトでは、resource.resx
とresource.sv-se.resx
というファイルがあります。アプリケーション全体の文化/言語を切り替えるのにうまくいきますが、コントロールレベルでコントロールする方法を理解することはできません。私は、Language="sv-SE"
を設定することは十分であるが、TextBlockはまだ英語resoursesファイルからその価値を引き取っていることを期待していただろう。
<Windows
xmlns:resx="clr-namespace:MyApplication.Localization"
...
>
<TextBlock x:Name="TextInEnglish" Text="{x:Static resx:Resources.MyText}" />
<TextBlock x:Name="TextInSwedish" Language="sv-SE" Text="{x:Static resx:Resources.MyText}" />
...
これを行うにはどうすればいいですか?
2アイデア:1)の値コンバーターを使用して、上の多あなたはこのようなあなたのコードでそれを使用することができます
:しかし、あなたは、あなたが文化を指定することができるマークアップ拡張機能を作成することができます言語とテキスト。 2)、言語プロパティを無視し、言語とテキストまたはロケIDの添付プロパティを作成します。これにより、変更をリッスンし、それに従ってテキスト(または別のプロパティ)を更新します。しかし、私はこれを解決するより良い方法があると思います。 – dowhilefor
@dowhilefor:ありがとうございました。私は実際には価値交換機で始まったが、私はそれを最後に好まなかった。それは少し乱雑になった。 2番目のアイデアは興味深いように聞こえますが、コードを完全に理解するためにはコードを見る必要があると思います。乾杯! –