使用StringFormat将string添加到WPF XAML绑定

我有一个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}}"/> 

不幸的是,我所看到的例子都没有附加一个string作为我试图做的绑定值。 我相信这是简单的,但我没有find它的运气。 任何人都可以向我解释如何做到这一点?

你的第一个例子实际上是你所需要的:

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

如果您在string或多个绑定中间有Binding,那么这里有一个替代scheme可以很好地实现可读性:

 <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> 

请注意,在绑定中使用StringFormat只能用于“文本”属性。 使用这个Label.Content将不起作用

在xaml中

 <TextBlock Text="{Binding CelsiusTemp}" /> 

ViewModel ,通过这种方式设置值也是可行的:

  public string CelsiusTemp { get { return string.Format("{0}°C", _CelsiusTemp); } set { value = value.Replace("°C", ""); _CelsiusTemp = value; } }