J'ai une application WPF 4 qui contient un TextBlock qui a une liaison unidirectionnelle à 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 très 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 seulement 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é une chaîne à la valeur liée comme j'essaie de le faire. Je suis sûr que ça doit être quelque chose de simple mais je n'ai pas de chance de le trouver. Quelqu'un peut-il m'expliquer comment faire cela?
la source
{}
?{
, elle fournit un mécanisme pour s'échapper, car elle a{}
déjà un sens en xaml.Voici une alternative qui fonctionne bien pour la lisibilité si vous avez la liaison au milieu de la chaîne ou plusieurs liaisons:
la source
0 °C ( 32 °F)
Veuillez noter que l'utilisation de StringFormat dans les liaisons ne semble fonctionner que pour les propriétés "texte". Utiliser ceci pour Label.Content ne fonctionnera pas
la source
ContentStringFormat
vient à la rescousse, par exemple:Content="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
En xaml
Dans
ViewModel
, de cette façon, la définition de la valeur fonctionne également:la source