WPF中的自定义DateTime stringformat

时间:2012-06-08 16:47:49

标签: wpf datetime binding string-formatting

我无法将自定义DateTime字符串格式用于绑定。我希望格式为“mmmm,yyyy”(例如“2012年6月”)。

以下不起作用。我得到一个短日期格式(m / d / yyyy)。

<TextBlock Text="{Binding ElementName=ThisWindow,
                          Path=Date,
                          StringFormat={}{0:MMMM\, yyyy}"/>

我考虑使用转换器,但我更喜欢纯XAML方法。

修改

为清楚起见,我有一个Window,其依赖属性Date的类型为DateTime。在我的XAML中,我将窗口命名为“Thiswindowow”。

编辑2:

我回头查看了我的实际代码,我有一个Label,而不是TextBlock。我将其更改为TextBlock,它工作正常。

<Label Content="{Binding ElementName=ThisWindow,
                 Path=Date,
                 StringFormat={}{0:MMMM\, yyyy}"/>

任何人都知道为什么它不适用于Label

感谢。

2 个答案:

答案 0 :(得分:11)

ContentControls有一个ContentStringFormat property会覆盖原始格式。

(当我看到你的问题时,我预计这实际上是问题,但最初发现TextBlock感到惊讶)

答案 1 :(得分:2)

您的月份需要大写:

{Binding Source={x:Static sys:DateTime.Now}, StringFormat={}{0:MMMM\, yyyy}}

编辑:

Label问题可能是因为Label有Content而不是Text。

将Text =“{Binding ...}”更改为Content =“{Binding ...}”