使用 StringFormat 将字符串添加到 WPF XAML 绑定
本文关键字:WPF XAML 绑定 添加 StringFormat 字符串 使用 | 更新日期: 2023-09-27 18:34:32
我有一个 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}}"/>
不幸的是,我看到的所有示例都没有像我尝试的那样将字符串附加到绑定值。 我确信它一定是简单的东西,但我没有任何运气找到它。 谁能向我解释如何做到这一点?
你的第一个例子实际上是你需要的:
<TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" />
如果
字符串中间有绑定或多个绑定,则下面是一个很好的可读性:
<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 似乎仅适用于"文本"属性。将其用于标签.内容将不起作用
在 xaml 中
<TextBlock Text="{Binding CelsiusTemp}" />
在ViewModel
中,这种设置值的方式也有效:
public string CelsiusTemp
{
get { return string.Format("{0}°C", _CelsiusTemp); }
set
{
value = value.Replace("°C", "");
_CelsiusTemp = value;
}
}