Eu tenho um aplicativo WPF 4 que contém um TextBlock que tem uma ligação unidirecional a um valor inteiro (nesse caso, uma temperatura em graus Celsius). O XAML fica assim:
<TextBlock x:Name="textBlockTemperature">
<Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Isso funciona bem para exibir o valor real da temperatura, mas eu gostaria de formatar esse valor para incluir ° C em vez de apenas o número (30 ° C em vez de apenas 30). Eu tenho lido sobre StringFormat e vi vários exemplos genéricos como este:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
e
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
Infelizmente, nenhum dos exemplos que eu vi anexou uma string ao valor associado, como estou tentando fazer. Tenho certeza de que deve ser algo simples, mas não estou tendo sorte em encontrá-lo. Alguém pode me explicar como fazer isso?
c#
wpf
xaml
data-binding
string-formatting
bmt22033
fonte
fonte
{}
?{
, ela fornece um mecanismo para escapar, já que{}
já tem significado no xaml.Aqui está uma alternativa que funciona bem para facilitar a leitura, se você tiver o Binding no meio da string ou várias ligações:
fonte
0 °C ( 32 °F)
Observe que o uso de StringFormat em Bindings parece funcionar apenas para propriedades de "texto". Usar isso para Label.Content não funcionará
fonte
ContentStringFormat
vem para o resgate, exemplo:Content="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
No xaml
Em
ViewModel
, este definindo o valor de maneira também funciona:fonte