2012-06-08 13 views
8

Non riesco a ottenere il formato di stringa DateTime personalizzato per funzionare nell'associazione. Voglio che il formato sia "mmmm, aaaa" (ad es. "Giugno 2012").Custom DateTime stringformat in WPF

Quanto segue non funziona. Ottengo un formato di data breve (m/g/aaaa).

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

Ho considerato l'utilizzo di un convertitore, ma preferisco un approccio XAML puro.

Edit:

Per chiarezza, ho un Window con una proprietà di dipendenza di tipo DateDateTime. Nel mio XAML, ho chiamato la finestra 'Thiswindow'.

Edit 2:

Ho guardato indietro al mio codice vero e proprio, e ho avuto un Label, non un TextBlock. L'ho cambiato in TextBlock e funziona perfettamente.

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

Qualcuno sa il motivo per cui non funziona con Label?

Grazie.

+0

Questo ha funzionato per me (tranne che dovrebbe essere '{0: MMMM \, yyyy}'). Qualcosa sulla tua proprietà "Date"? È un caso restituire una 'stringa' invece di un' DateTime'? – CodingGorilla

+0

Verrà modificato per rendere più chiara la situazione ... – gregsdennis

risposta

11

ContentControls hanno un ContentStringFormat property che sostituisce la formattazione originale.

(quando ho visto la tua domanda mi aspettavo che questo è il problema in realtà, ma è stato sorpreso di trovare una TextBlock in un primo momento)

+0

Non sapevo di quella proprietà. Fantastico grazie. – gregsdennis

2

vostro mese deve essere in maiuscolo:

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

EDIT:

Il problema Label è probabilmente perché Label ha un contenuto, non testo.

cambiare il testo = "{Binding ...}" al contenuto = "{Binding ...}"

+0

L'ho avuto come proprietà 'Content' quando era un' Label' e non funzionava. – gregsdennis