WPF中StringFormat的用法
在Windows Presentation Foundation (WPF) 开发中,`StringFormat` 是一个非常实用的功能,它允许开发者以一种灵活且强大的方式格式化绑定的数据。本文将详细介绍 `StringFormat` 在 WPF 中的应用及其与 C# 中 `string.Format` 方法之间的相似之处。 ### 一、StringFormat 基础介绍 `StringFormat` 主要用于 `Data Binding` 场景中,它允许开发者自定义数据的显示格式。在 WPF 中,`StringFormat` 可以在 `Binding` 对象中设置,以控制绑定到 UI 元素(如 `TextBox`)的数据如何显示。其基本语法类似于 C# 中的 `string.Format` 方法,但使用 `{}` 代替 `{0}` 这样的索引表示。 ### 二、数值格式化 #### 1. 货币格式化 - **C# 示例**: ```csharp string.Format("{0:C}", 0.2); // 输出为 $0.10 string.Format("{0:C1}", 10.05); // 输出为 10.1 string.Format("Աۣ{0:C}Żݼ{1:C}", 99.15, 109.25); // 输出为 Աۣ$99.15Żݼ$109.25 ``` - **WPF 示例**: ```xml <TextBox Name="txtPrice" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White"> <TextBox.Text> <Binding Path="Price" StringFormat="{}{0:C}" /> </TextBox.Text> </TextBox> ``` 上述示例中的 `StringFormat="{}{0:C}"` 表示将 `Price` 属性的值格式化为货币形式。 #### 2. 整数格式化 - **C# 示例**: ```csharp string.Format("{0:D3}", 99); // 输出为 099 string.Format("{0:D2}", 1234); // 输出为 1234 ``` - **WPF 示例**: ```xml <TextBox Name="txtRoomCount" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White"> <TextBox.Text> <Binding Path="RoomCount" StringFormat="{}{0:D2}" /> </TextBox.Text> </TextBox> ``` 上述示例中的 `StringFormat="{}{0:D2}"` 表示将 `RoomCount` 属性的值格式化为两位整数。 #### 3. 数值格式化 - **C# 示例**: ```csharp string.Format("{0:N}", 12300); // 输出为 12,300.00 string.Format("{0:N3}", 12300.1234); // 输出为 12,300.123 ``` - **WPF 示例**: ```xml <TextBox Name="txtNumber" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White"> <TextBox.Text> <Binding Path="Number" StringFormat="{}{0:N}" /> </TextBox.Text> </TextBox> ``` 上述示例中的 `StringFormat="{}{0:N}"` 表示将 `Number` 属性的值格式化为标准数值格式。 #### 4. 百分比格式化 - **C# 示例**: ```csharp string.Format("{0:P}", 0.12341); // 输出为 12.34% string.Format("{0:P1}", 0.1256); // 输出为 12.6% ``` - **WPF 示例**: ```xml <TextBox Name="txtPercentage" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White"> <TextBox.Text> <Binding Path="Percentage" StringFormat="{}{0:P}" /> </TextBox.Text> </TextBox> ``` 上述示例中的 `StringFormat="{}{0:P}"` 表示将 `Percentage` 属性的值格式化为百分比。 #### 5. 定位格式化 - **C# 示例**: ```csharp 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); // 输出为 123 ``` - **WPF 示例**: ```xml <TextBox Name="txtPosition" HorizontalAlignment="Left" Width="170" Height="24" VerticalAlignment="Top" Background="White"> <TextBox.Text> <Binding Path="Position" StringFormat="{}{0:0000.00}" /> </TextBox.Text> </TextBox> ``` 上述示例中的 `StringFormat="{}{0:0000.00}"` 表示将 `Position` 属性的值格式化为四位整数加两位小数的形式。 ### 三、日期时间格式化 - **C# 示例**: ```csharp string.Format("{0:d}", System.DateTime.Now); // 输出为 2010-6-19 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 示例**: ```xml <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> ``` 上述示例中的 `StringFormat="{}{0:yyyy-MM-dd HH:mm}"` 表示将 `CreateTime` 属性的值格式化为 "年-月-日 时:分" 的形式。 通过上述示例可以看出,`StringFormat` 在 WPF 中的用法与 C# 中 `string.Format` 的用法非常相似,只是在语法上稍有不同。熟练掌握这些格式化技巧,可以帮助开发者更加高效地进行 UI 设计和数据展示工作。
- northow2014-02-18感觉和c#没什么区别..
- 粉丝: 19
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【java毕业设计】智慧社区政务服务平台网.zip
- 【java毕业设计】智慧社区无障碍设施门户.zip
- 【java毕业设计】智慧社区家庭医生预约网.zip
- comsol变压器温度场流体场二维计算模型,可以得到变压器达到稳态时的温度场和流体场分布,
- 【java毕业设计】智慧社区远程办公门户.zip
- 【java毕业设计】智慧社区儿童教育娱乐网.zip
- 【java毕业设计】智慧社区垃圾分类教育网.zip
- 新中大SE程序(包含绿色注册文件)
- 【java毕业设计】智慧社区农产品直销平台网.zip
- 【java毕业设计】智慧社区垃圾分类数据分析网.zip
- 【java毕业设计】智慧社区老人健康监测门户.zip
- 【java毕业设计】智慧社区智慧养老照护门户.zip
- 牙买加太阳能电池板检测7-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 十篇不同工作个人简介模板
- 一款基于代码生成器的低代码开发平台!前后端分离架构SpringBoot2.x和3.x,SpringCloud,Ant Design Vue3,Mybatis-plus,Shiro,JWT,支持微服务
- 车辆紧急防避撞AEB控制该模型包括,基于Carsim及Matlab simulink的联合仿真控制模型 (1)驾驶员制动模型来模拟制动过程; (2)实现以模糊控制实现期望减速度的计算, (3)纵向发动