刚刚在 UWP 为 TimeSpan 值创建 StringFormatConverter ConverterParameter 时遇到了这个问题。TimeSpan.ToString(x) 自定义格式字符串出于某种疯狂的原因需要在文字字符周围加上撇号,即使 DateTimeOffset 不需要。似乎不必要的不一致。
无论如何......以上都没有成功。一种方法可以让 XAML 设计器显示/工作,但它会产生构建错误。
我决定的解决方案是将格式字符串放在最近的封闭元素的字符串资源中。由于我在使用 Border 创建的框中显示值,因此我将格式字符串填充到 Border 元素的资源中。
StringFormatConverter 是 NuGet 上的 Microsoft UWP 工具包中的一个。
<StackPanel Orientation="Horizontal">
<TextBlock Text="Timespan=" />
<Border BorderBrush="Black" BorderThickness="0.5" Padding="2">
<Border.Resources>
<x:String x:Key="TimespanValueConverterParameter">{0:hh':'mm':'ss'.'fff}</x:String>
</Border.Resources>
<TextBlock Text="{Binding TimespanValue, Mode=OneWay, Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource TimespanValueConverterParameter}}" />
</Border>
</StackPanel>