UWP XAML中如何自定义格式化TimeSpan(仅显示时分)?
解决UWP XAML中TimeSpanFormatConverter的ConverterParameter反斜杠丢失问题
我之前也踩过这个坑!在UWP的XAML里传递带反斜杠的TimeSpan格式字符串时,直接写h\:mm肯定会丢反斜杠——因为XAML会自动解析转义字符,单个反斜杠会被当作转义标记吃掉。这里给你两个靠谱的解决方案:
方案1:使用双重反斜杠转义
把格式字符串里的单个反斜杠换成两个反斜杠,这样XAML解析的时候会把\\转换成单个\,最终传到转换器里的就是正确的h\:mm格式。
对应的XAML代码示例:
<TextBlock Text="{Binding YourTimeSpanProperty, Converter={StaticResource TimeSpanFormatConverter}, ConverterParameter='h\\:mm'}" />
方案2:使用XML实体替代反斜杠
如果你不习惯写双重反斜杠,也可以用XML实体\来表示反斜杠。XAML解析时会自动把这个实体转换成\,效果和方案1完全一致。
对应的XAML代码示例:
<TextBlock Text="{Binding YourTimeSpanProperty, Converter={StaticResource TimeSpanFormatConverter}, ConverterParameter='h\:mm'}" />
补充:转换器的核心代码验证
确保你的TimeSpanFormatConverter里的Convert方法能正确接收格式字符串,比如:
public object Convert(object value, Type targetType, object parameter, string language) { if (value is TimeSpan timeSpan && parameter is string format) { return timeSpan.ToString(format); } // 处理异常或默认情况 return value?.ToString() ?? string.Empty; }
这样设置后,就能正确把TimeSpan格式化成仅显示小时和分钟的样式啦~
内容的提问来源于stack exchange,提问作者Michael Kintscher they-them
相关产品推荐
相关产品推荐

