WPF中StringFormat的用法

本文详细介绍了在WPF与C#中使用StringFormat进行数据格式化的多种方法,包括货币、十进制数字、百分比、零占位符、数字占位符及日期等格式的展示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WPF中StringFormat的用法可以参照C#中string.Format的用法

1、

C#中用法:

格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)示例:

string.Format("{0:C}",0.2) 结果为:¥0.10 (英文操作系统结果:$0.10)

默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数
string.Format("{0:C1}",10.05) 结果为:¥10.1 (截取会自动四舍五入)

格式化多个Object实例 string.Format("会员价:{0:C},优惠价{1:C}",99.15,109.25)

WPF中用法:
  格式化货币示例:

 <TextBox  Name="txtPrice" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White">
          <TextBox.Text>
                   <Binding Path="Price" StringFormat="{}{0:C}"/>
          </TextBox.Text>
</TextBox>

2、

C#中用法:

格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)示例:

string.Format("{0:D3}",99) 结果为:099

string.Format("{0:D2}",1234) 结果为:1234,(精度说明符指示结果字符串中所需的最少数字个数。)

WPF中用法:

格式化十进制的数字示例:

 <TextBox  Name="txtRoomCount" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White">
          <TextBox.Text>
                   <Binding Path="RoomCount" StringFormat="{}{0:D2}"/>
          </TextBox.Text>
</TextBox>

3、

C#中用法:

用分号隔开的数字,并指定小数点后的位数示例:

string.Format("{0:N}", 12300) 结果为:12,300.00  (默认为小数点后面两位)

string.Format("{0:N3}", 12300.1234) 结果为:12,300.123(自动四舍五入)

WPF中用法:

同格式化十进制的数字示例

4、

C#中用法:

格式化百分比示例:

string.Format("{0:P}", 0.12341) 结果为:12.34% (默认保留百分的两位小数)

string.Format("{0:P1}", 0.1256) 结果为:12.6% (自动四舍五入)

WPF中用法:

同格式化十进制的数字示例

5、

C#中用法:

零占位符和数字占位符示例:

string.Format("{0:0000.00}", 12345.015) 结果为:12345.02

string.Format("{0:0000.00}", 123.015) 结果为:0123.02

string.Format("{0:###.##}", 12345.015) 结果为:12345.02

string.Format("{0:####.#}", 123.015) 结果为:123194

WPF中用法:

同格式化十进制的数字示例

6、

C#中用法:

日期格式化示例:

string.Format("{0:d}",System.DateTime.Now) 结果为:2010-6-19 (月份位置不是06)

string.Format("{0:D}",System.DateTime.Now) 结果为:2010年6月19日

string.Format("{0:f}",System.DateTime.Now) 结果为:2010年6月19日 20:30

string.Format("{0:F}",System.DateTime.Now) 结果为:2010年6月19日 20:30:10

string.Format("{0:g}",System.DateTime.Now) 结果为:2010-6-19 20:30

string.Format("{0:G}",System.DateTime.Now) 结果为:2010-6-19 20:30:10

string.Format("{0:m}",System.DateTime.Now) 结果为:6月19日

string.Format("{0:t}",System.DateTime.Now) 结果为:20:30

string.Format("{0:T}",System.DateTime.Now) 结果为:20:30:10

string.Format("{0:yyyy-MM-dd HH:mm}",System.DateTime.Now) 结果为:2010-6-19 20:30

string.Format("{0:yyyy-MM-dd }",System.DateTime.Now) 结果为:2010-6-19

WPF中用法:

日期格式化示例:

<TextBox  Name="txtCreateTime" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White">
          <TextBox.Text>
                   <Binding Path="CreateTime" StringFormat="{}{0:yyyy-MM-dd HH:mm}"/>
          </TextBox.Text>
</TextBox>

转载于:https://www.cnblogs.com/zhengwen/archive/2010/06/19/1761036.html

### WPF字符串格式化 (String Format) 的用法WPF 数据绑定中,`StringFormat` 是一种非常强大的工具,用于定义数据源值的显示方式。通过 `StringFormat` 属性,可以在不修改实际数据的情况下改变其呈现形式。 #### 基本语法 当使用 `{}` 定义 `StringFormat` 时,在 XAML 中需要额外的一组大括号来避免与标记扩展冲突。例如: ```xml <TextBlock Text="{Binding ElementName=wnd, Path=ActualWidth, StringFormat={}{0:F2}}"/> ``` 此示例将窗口的实际宽度转换为两位小数的形式[^1]。 --- #### 示例:日期时间格式化 如果绑定的是一个 `DateTime` 类型的数据,则可以通过 `StringFormat` 来控制日期和时间的显示样式。例如: ```xml <TextBox> <TextBox.Text> {Binding Source={x:Static sys:DateTime.Now}, StringFormat=&#39;{}{0:yyyy-MM-dd HH:mm:ss}&#39;} </TextBox.Text> </TextBox> ``` 在此代码片段中,当前系统的日期时间将以 `YYYY-MM-DD HH:MM:SS` 格式显示[^1]。 --- #### 示例:数值格式化 对于数值类型的数据,可以应用不同的格式化选项。以下是几个常见的例子: - **千分位表示**: ```xml <TextBlock Text="{Binding Value, StringFormat={}{0:N0}}" /> ``` - **百分比表示**: ```xml <TextBlock Text="{Binding PercentageValue, StringFormat={}{0:P2}}" /> ``` 这些示例分别展示了如何以整数千分位以及保留两位小数的百分比形式显示数值。 --- #### 复杂场景下的 MultiBinding 和 StringFormat 结合 除了单向绑定外,还可以利用 `MultiBinding` 实现基于多个数据源的复杂格式化逻辑。例如: ```xml <MultiBinding StringFormat="List contains {0} items. First item is named &#39;{1}&#39;, age {2}."> <Binding ElementName="listBox" Path="Items.Count" /> <Binding ElementName="textBoxName" Path="Text" /> <Binding ElementName="textBoxAge" Path="Text" /> </MultiBinding> ``` 这段代码会动态生成一段描述性的文字,其中包含了列表项的数量、第一个项目的名称及其对应的年龄信息[^3]。 --- #### 文化特定格式支持 有时可能还需要考虑不同地区的文化差异对数字或日期表达的影响。此时可通过设置 `ConverterCulture` 属性指定所需的文化环境。比如: ```xml <TextBlock Text="{Binding DateOfBirth, StringFormat={}{0:d}, ConverterCulture=en-US}" /> ``` 这里强制采用美国英语 (`en-US`) 的短日期模式进行渲染。 --- ### 总结 以上介绍了几种典型的 WPF 绑定过程中运用 `StringFormat` 进行自定义数据显示的方法。无论是简单的数值调整还是复杂的多字段组合都能轻松应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值