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}'}" />