2012-06-08 12 views
8

No puedo obtener mi formato personalizado de fecha y hora para trabajar en mi enlace. Quiero que el formato sea "mmmm, aaaa" (por ejemplo, "junio de 2012").Personalizado DateTime stringformat en WPF

Lo siguiente no funciona. Obtengo un formato de fecha corta (m/d/aaaa).

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

He considerado el uso de un convertidor, pero prefiero un enfoque XAML puro.

Editar:

Para mayor claridad, tengo un Window con una propiedad de dependencia Date de tipo DateTime. En mi XAML, he nombrado la ventana 'Thiswindow'.

Edición 2:

Me volvió a mirar a mi código real, y que tenía una Label, no un TextBlock. Lo cambié a TextBlock y funciona bien.

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

Alguien sabe por qué no funciona con Label?

Gracias.

+0

Esto funcionó para mí (excepto que debería ser '{0: MMMM \, aaaa}') ¿Algo sobre su propiedad "Fecha"? ¿Es por casualidad devolver una 'cadena' en lugar de' DateTime'? – CodingGorilla

+0

Voy a editar para aclarar la situación ... – gregsdennis

Respuesta

11

ContentControls tienen una ContentStringFormat property que anula el formato original.

(Cuando vi tu pregunta que esperaba que este es el problema en realidad, pero se sorprendió al encontrar un TextBlock al principio)

+0

No sabía acerca de esa propiedad. Increíble gracias. – gregsdennis

2

Tu meses tiene que estar en mayúsculas:

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

EDIT:

El problema Label es probablemente porque la etiqueta tiene contenido, no al texto.

cambiar el texto = "{Binding} ..." al contenido = "{Binding} ..."

+0

Lo tenía como propiedad 'Content' cuando era' Label', y no funcionaba. – gregsdennis

Cuestiones relacionadas