WPF绑定StringFormat短datestring
我想在WPF中使用Short Date命名的string格式。
我尝试了这样的:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
这个怎么做?
尝试这个:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
这是文化敏感,需要.NET 3.5 SP1或更高版本。
注:这是区分大小写的。 “d”是短date格式说明符,而“D”是长date格式说明符 。
在标准date和时间格式string的MSDN页面上有一个完整的string格式列表,以及有关此MSDN博客文章中所有选项的更全面的说明
然而,这有一个问题 – 它始终以美国格式输出date,除非您自己将文化设置为正确的值。
如果不设置此属性,则绑定引擎将使用绑定目标对象的Language属性。 在XAML中,默认为“en-US”,或者从页面的根元素(或任何元素)inheritance该值(如果已明确设置)。
资源
一种方法是在后面的代码中(假设你已经将线程的文化设置为正确的值):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
另一种方法是在绑定中设置转换器文化:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
虽然这不允许你本地化输出。
或者使用这个英文(或混合自定义)格式:
StringFormat='{}{0:dd/MM/yyyy}'
使用StringFormat
属性(或者ContentControl
及其派生类的ContentStringFormat
,例如Label
)。
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
请注意,标准的String.Format
位置参数符号之前的{}
允许使用标记扩展语言转义大括号。
只要使用:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
如果你想添加一个string的值使用这个:
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />