使用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; } }