整数値(この場合は摂氏温度)への一方向のバインドを持つ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}}"/>
残念ながら、私が見ている例では、私がしようとしているように、バインドされた値に文字列を追加していません。単純なものでなければならないと思いますが、それを見つける運はありません。誰も私にそれを行う方法を説明できますか?
最初の例は、必要なものです。
<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />
以下は、文字列の中央に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>
BindingsでStringFormatを使用するのは、「テキスト」プロパティでのみ機能するようです。 Label.Contentにこれを使用しても機能しません