動的な言語切り替えが組み込まれたこのアプリケーションがあります。選択したカルチャに基づいて、アプリケーション全体の文字列が変更されます。翻訳された文字列とその元の値は、リソース ファイルから取得されます。ボタンやラベルなどにリソース値をアタッチするためにバインディングを使用します。このバインディングのほとんどはコード ビハインドで発生します。
Binding.StringFormat プロパティを使用して、ローカライズされた文字列をデータと連結できました。
mybinding.StringFormat = "# {0}";
「アイテムの数」について。私の問題は、コード ビハインドで 2 つ (またはそれ以上) のローカライズされた文字列を連結する必要があることです。MultiBinding を使用してバインディングを追加できることにすぐに気付きましたが、現在の動作を維持していますが、MultiBinding.StringFormat を使用しても動作しないようです。2 つのバインディング値の間にスペースを挿入しようとしていますmyMultiBinding.StringFormat = "{0} {1}";
が、「Greetings」ラベルにバインドすると空白に見えます。
Binding b = GetBinding("HelloWorld");
Binding b2 = GetBinding("Name");
MultiBinding multib = new MultiBinding();
multib.StringFormat = "{0} {1}";
multib.Bindings.Add(b);
multib.Bindings.Add(b2);
Greetings.SetBinding(Label.ContentProperty, multib);
パス値に基づいてバインディングを取得する GetBinding() 関数は次のとおりです。
public Binding GetBinding(string name)
{
Binding binding = new Binding();
binding.Source = mySource;
binding.Path = new PropertyPath(name);
return binding;
}
また、.NET 4 を使用していることにも注意してください。Xaml でも動作しないようです。4.0で機能しなかった後、.NET 3.5でもこれを試しました。両方の子バインディングが機能しています...コンバーターを指定すると、値が表示されます。私はむしろ StringFormat プロパティを使用したいと思います。