Tengo una aplicación WPF 4 que contiene un TextBlock que tiene un enlace unidireccional a un valor entero (en este caso, una temperatura en grados Celsius). El XAML se ve así:
<TextBlock x:Name="textBlockTemperature">
<Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Esto funciona bien para mostrar el valor de temperatura real, pero me gustaría formatear este valor para que incluya ° C en lugar de solo el número (30 ° C en lugar de solo 30). He estado leyendo sobre StringFormat y he visto varios ejemplos genéricos como este:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
y
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
Desafortunadamente, ninguno de los ejemplos que he visto ha agregado una cadena al valor enlazado como estoy tratando de hacer. Estoy seguro de que debe ser algo simple, pero no tengo suerte de encontrarlo. ¿Alguien puede explicarme cómo hacer eso?
c#
wpf
xaml
data-binding
string-formatting
bmt22033
fuente
fuente
{}
?{
, proporciona un mecanismo para escapar, ya que{}
ya tiene significado en xaml.Aquí hay una alternativa que funciona bien para la legibilidad si tiene el enlace en el medio de la cadena o enlaces múltiples:
fuente
0 °C ( 32 °F)
Tenga en cuenta que el uso de StringFormat en enlaces solo parece funcionar para propiedades de "texto". Usar esto para Label.Content no funcionará
fuente
ContentStringFormat
viene al rescate, ejemplo:Content="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
En xaml
De
ViewModel
esta manera, establecer el valor también funciona:fuente