У меня есть приложение WPF 4, содержащее TextBlock, который имеет одностороннюю привязку к целочисленному значению (в данном случае - температуре в градусах Цельсия). XAML выглядит так:
<TextBlock x:Name="textBlockTemperature">
<Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock>
Это отлично подходит для отображения фактического значения температуры, но я хотел бы отформатировать это значение так, чтобы оно включало ° C, а не просто число (30 ° C вместо 30). Я читал о StringFormat и видел несколько таких общих примеров:
// format the bound value as a currency
<TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" />
и
// preface the bound value with a string and format it as a currency
<TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/>
К сожалению, ни один из примеров, которые я видел, не добавлял строку к привязанному значению, как я пытаюсь это сделать. Я уверен, что это должно быть что-то простое, но мне не удалось его найти. Может ли кто-нибудь объяснить мне, как это сделать?
c#
wpf
xaml
data-binding
string-formatting
bmt22033
источник
источник
{}
?{
, она предоставляет механизм для выхода, поскольку{}
уже имеет значение в xaml.Вот альтернатива, которая хорошо работает для удобочитаемости, если у вас есть привязка в середине строки или несколько привязок:
источник
0 °C ( 32 °F)
Обратите внимание, что использование StringFormat в привязках работает только для "текстовых" свойств. Использование этого для Label.Content не будет работать
источник
ContentStringFormat
приходит на помощь, например:Content="{Binding Path=TargetProjects.Count}" ContentStringFormat="Projects: {0}"
.HeaderStringFormat="{}{0} For Report"
В xaml
В
ViewModel
этом случае установка значения также работает:источник