Ich habe eine WPF 4-Anwendung, die einen TextBlock enthält, der eine Einwegbindung an einen ganzzahligen Wert (in diesem Fall eine Temperatur in Grad Celsius) hat. Die XAML sieht folgendermaßen aus:
<TextBlock x:Name="textBlockTemperature">
<Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Dies funktioniert gut für die Anzeige des tatsächlichen Temperaturwerts, aber ich möchte diesen Wert so formatieren, dass er ° C anstelle nur der Zahl enthält (30 ° C statt nur 30). Ich habe über StringFormat gelesen und einige allgemeine Beispiele wie dieses gesehen:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
und
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
Leider hat keines der Beispiele, die ich gesehen habe, eine Zeichenfolge an den gebundenen Wert angehängt, wie ich es versuche. Ich bin sicher, es muss etwas Einfaches sein, aber ich habe kein Glück, es zu finden. Kann mir jemand erklären, wie das geht?
quelle
{}
?{
, bietet es einen Mechanismus zum Escape, da{}
es in xaml bereits eine Bedeutung hat.Hier ist eine Alternative, die sich gut für die Lesbarkeit eignet, wenn Sie die Bindung in der Mitte der Zeichenfolge oder mehrere Bindungen haben:
quelle
0 °C ( 32 °F)
Bitte beachten Sie, dass die Verwendung von StringFormat in Bindungen nur für "Text" -Eigenschaften zu funktionieren scheint. Die Verwendung für Label.Content funktioniert nicht
quelle
ContentStringFormat
kommt zur Rettung, Beispiel :Content="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
In xaml
Auf
ViewModel
diese Weise funktioniert das Einstellen des Werts auch:quelle