it-swarm.com.de

Verwenden Sie StringFormat, um einer WPF-XAML-Bindung eine Zeichenfolge hinzuzufügen

Ich habe eine WPF 4-Anwendung, die einen TextBlock enthält, der eine einseitige Bindung an einen ganzzahligen Wert aufweist (in diesem Fall eine Temperatur in Grad Celsius). 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 statt 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 mir sicher, dass es etwas Einfaches sein muss, aber ich habe kein Glück, es zu finden. Kann mir jemand erklären, wie das geht?

112
bmt22033

Ihr erstes Beispiel ist genau das, was Sie brauchen:

<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />
187
Reed Copsey

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:

<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>
97
denis morozov

Bitte beachten Sie, dass die Verwendung von StringFormat in Bindungen nur für "Text" -Eigenschaften zu funktionieren scheint. Dies für Label.Content zu verwenden, funktioniert nicht

75