web-dev-qa-db-ja.com

StringFormatを使用して、WPF XAMLバインディングに文字列を追加します

整数値(この場合は摂氏温度)への一方向のバインドを持つTextBlockを含むWPF 4アプリケーションがあります。 XAMLは次のようになります。

<TextBlock x:Name="textBlockTemperature"><Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>

これは実際の温度値を表示するのには問題なく機能しますが、この値をフォーマットして、数値の代わりに°Cを含めるようにします(30ではなく30°C)。私はStringFormatについて読んでおり、このようないくつかの一般的な例を見てきました:

// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />

そして

// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>

残念ながら、私が見ている例では、私がしようとしているように、バインドされた値に文字列を追加していません。単純なものでなければならないと思いますが、それを見つける運はありません。誰も私にそれを行う方法を説明できますか?

105
bmt22033

最初の例は、必要なものです。

<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />
178
Reed Copsey

以下は、文字列の中央にBindingがある場合、または複数のバインディングがある場合に読みやすくするための代替案です。

<TextBlock>
  <Run Text="Temperature is "/>
  <Run Text="{Binding CelsiusTemp}"/>
  <Run Text="°C"/>  
</TextBlock>

<!-- displays: 0°C (32°F)-->
<TextBlock>
  <Run Text="{Binding CelsiusTemp}"/>
  <Run Text="°C"/>
  <Run Text=" ("/>
  <Run Text="{Binding Fahrenheit}"/>
  <Run Text="°F)"/>
</TextBlock>
92
denis morozov

BindingsでStringFormatを使用するのは、「テキスト」プロパティでのみ機能するようです。 Label.Contentにこれを使用しても機能しません

71