J'ai une application WPF 4 qui contient un TextBlock qui a une liaison à sens unique à une valeur entière (dans ce cas, une température en degrés Celsius). Le XAML ressemble à ceci:
<TextBlock x:Name="textBlockTemperature"><Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Cela fonctionne bien pour afficher la valeur de température réelle, mais j'aimerais formater cette valeur afin qu'elle inclue ° C au lieu du nombre (30 ° C au lieu de 30). J'ai lu sur StringFormat et j'ai vu plusieurs exemples génériques comme celui-ci:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
et
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
Malheureusement, aucun des exemples que j'ai vus n'a ajouté de chaîne à la valeur liée, comme j'essaie de le faire. Je suis sûr que ça doit être simple, mais je n'ai aucune chance de le trouver. Quelqu'un peut-il m'expliquer comment faire cela?
Votre premier exemple est effectivement ce dont vous avez besoin:
<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />
Voici une alternative qui fonctionne bien pour la lisibilité si vous avez la liaison au milieu de la chaîne ou plusieurs liaisons:
<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>
Veuillez noter que l'utilisation de StringFormat dans Bindings ne semble fonctionner que pour les propriétés "text". Utiliser ceci pour Label.Content ne fonctionnera pas