StringFormat是MAUI XAML中用于Binding值格式化显示的轻量级工具,支持数字、货币、百分比、日期等格式及自定义前后缀,但不适用于string类型、复合绑定或复杂逻辑场景。

在 MAUI 的 XAML 中,StringFormat 可以配合绑定(Binding)使用,对绑定的值进行格式化显示,比如数字、日期、货币等。它只适用于 Binding,不能用于普通属性赋值或静态文本。
基本语法:在 Binding 中设置 StringFormat
直接在 {Binding} 扩展中添加 StringFormat 参数即可:
其中 {0:C2} 是 .NET 标准格式字符串(C2 表示带两位小数的货币格式),Price 是 ViewModel 中的 double 或 decimal 属性。
支持的常见格式类型
-
数字:
{0:N2}→ 千分位+两位小数,如1,234.56 -
货币:
{0:C}或{0:C2}→ 本地化货币符号,如¥123.45(中文环境) -
百分比:
{0:P1}→ 乘100后加%,如12.3%(对应 0.123) -
日期时间:
{0:yyyy-MM-dd HH:mm}→ 自定义时间显示 -
自定义前缀/后缀:
StringFormat='剩余{0}件'→ 直接拼接文字
注意事项和常见问题
StringFormat 不会改变原始数据,只影响显示;它依赖于当前线程的 CultureInfo,所以多语言 App 需注意本地化行为。
- 如果绑定值为
null,默认显示空字符串(不会报错) -
StringFormat对string类型无效(本身已是字符串,无格式化意义) - 不支持复合绑定(如
{Binding Name, StringFormat='{0} - {1}'}这种写法不合法) - 若需复杂逻辑,建议改用
IValueConverter,StringFormat 仅适合简单格式场景
替代方案:IValueConverter(需要更灵活控制时)
当 StringFormat 不够用(比如要根据值动态变色、拼接多个属性、做条件判断),就该上转换器:
在 C# 中实现 IValueConverter,可完全自定义返回字符串,比 StringFormat 更强大也更可控。
基本上就这些。StringFormat 是轻量级格式化利器,用对了省事又清晰。










