在 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 是轻量级格式化利器,用对了省事又清晰。
