Mam aplikację WPF 4, która zawiera TextBlock, który ma jednokierunkowe powiązanie z wartością całkowitą (w tym przypadku jest to temperatura w stopniach Celsjusza). XAML wygląda następująco:
<TextBlock x:Name="textBlockTemperature">
<Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Działa to dobrze do wyświetlania rzeczywistej wartości temperatury, ale chciałbym sformatować tę wartość, aby zawierała ° C zamiast tylko liczby (30 ° C zamiast tylko 30). Czytałem o StringFormat i widziałem kilka ogólnych przykładów, takich jak ten:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
i
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
Niestety, żaden z przykładów, które widziałem, nie dołączał ciągu do wartości związanej, tak jak próbuję to zrobić. Jestem pewien, że to musi być coś prostego, ale nie mam szczęścia, aby to znaleźć. Czy ktoś może mi wyjaśnić, jak to zrobić?
c#
wpf
xaml
data-binding
string-formatting
bmt22033
źródło
źródło
{}
?{
, zapewnia mechanizm ucieczki, ponieważ{}
ma już znaczenie w xaml.Oto alternatywa, która działa dobrze dla czytelności, jeśli masz Binding w środku ciągu lub wiele powiązań:
źródło
0 °C ( 32 °F)
Zauważ, że użycie StringFormat w Bindings wydaje się działać tylko dla właściwości „text”. Używanie tego dla Label.Content nie będzie działać
źródło
ContentStringFormat
przychodzi na ratunek, npContent="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
W XAML
W
ViewModel
ten sposób ustawienie wartości działa również:źródło