我使用的是以下XAML:
<Label Grid.Row="0" Grid.Column="0" Content="Datum"/>
<Label Grid.Row="0" Grid.Column="1" Content="{Binding TimeStamp, StringFormat={}{0:yyyy-MM-dd HH:mm:ss.fff}}"/>
<Label Grid.Row="0" Grid.Column="2" Content="Level"/>
<Label Grid.Row="0" Grid.Column="3" Content="{Binding Level}"/>
但TimeStamp的格式如下:
2.24.2012 7:38
我启动了Snoop(很棒的工具!)并注意到Label实际上是由一个TextBox组成的,而且这个TextBox包含了我定义的TimeStamp格式。然后我用TextBox替换了Label,我得到了正确格式化的TimeStamp。
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding TimeStamp, StringFormat={}{0:yyyy-MM-dd HH:mm:ss.fff}}"/>
2012-02-24 07:38:23.123
我没有定义资源,触发器或样式块来覆盖标签行为,所以我想知道为什么会发生这种情况。
有什么想法吗?
答案 0 :(得分:4)
Binding.StringFormat属性不适用于标签,您需要使用Label上的ContentStringFormat属性
<Label Grid.Row="0" Grid.Column="1" Content="{Binding TimeStamp}">
<Label.ContentStringFormat>0:yyyy-MM-dd HH:mm:ss.fff</Label.ContentStringFormat>
</Label>