2011-01-27 7 views
3

多言語サポートが必要なWPF & MVVMアプリケーションを開発しています。静的テキストを持つ各コントロールでは、コンバーターを使用して、ユーザーの言語に適した単語を検索しています。デザイン時にWPFのラベル、ボタンなどにバインドするには?

ただし、これは各コントロールにテキストが表示されないことを意味します。これは、設計時にUI開発者に不快感を与えます。デザインタイムのテキストを表示する方法はありますか?例えば

 <TextBlock> 
      <TextBlock.Text> 
       <Binding Converter="{StaticResource Translator}" 
         Path="Controller" 
         ConverterParameter="Search for" /> 
      </TextBlock.Text> 
     </TextBlock> 

がどのように私は、このコンバータは、翻訳変換パラメータを表示するには、設計時に実行させることができますか?

答えて

1

まず、markup extensionを使用することをお勧めします。次に、マークアップは次のようになります。

<TextBlock Text="{my:Localize Key=MyLabel, Default='The text you want to be displayed by default'}" .../> 

デフォルトのテキストも[ブレンド]に表示されます。

2番目に、コンバーターが有効なデフォルトテキストを返す限り、コンバーターのアプローチに関する問題はありません。言い換えると、コンバータは実行時だけでなく設計時にも実行する必要があります。

+0

あなたは明確にできますか?マークアップ拡張はかなり広いトピックです。上記の編集でコード内にマークアップ拡張を使用しています。すべてのバインディングはマークアップ拡張です。設計時にコンバータを実行させるにはどうすればよいですか? – Daniel

+0

コンバータは設計時に実行する必要があります。あなたの場合の問題は、データコンテキストが正しいオブジェクトに設定されていないため、「コントローラ」パスを解決できないということです。 –

+0

コントローラオブジェクトは、上記のTextBlockを含むビューのViewModelのプロパティであり、実行時までインスタンス化されません。 – Daniel

関連する問題