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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip