Formattazione della data in datagrid WPF

Ho già cercato StackOverflow per una soluzione e ho trovato questo:

È necessario formattare le date in DataGrid WPF generato dynamicmente

Il mio problema è che carico alcuni dati dal mio database SQL Server e voglio mostrarli nella mia applicazione WPF in un DataGrid. Funziona molto bene L’unica cosa che voglio cambiare è che la colonna della data è nel formato “GG / MM / AAAA HH: MM: SS” e voglio avere “GG.MM.AAAA”. Ok, allora ho guardato il link qui sotto e ho provato questo nel mio programma:

       <!--  -->   

La parte commentata è il mio modo di soluzione, ma genera una XMLParseException. Prima di tutto, è ansible questo modo di soluzione durante l’utilizzo di AutoGenerateColumns? Se no, in quale altro modo posso provare a gestirlo? Se sì, qual è il problema con il codice sopra?

EDIT: La mia domanda non è stata risolta perché ho deciso di non ribuild la mia applicazione, non c’è una soluzione con AutoGenerateColumns = true?

Non dimenticare di utilizzare DataGrid.Columns, tutte le colonne devono trovarsi all’interno della raccolta. Nel mio progetto ho formato la data in modo un po ‘diverso:

      

Con AutoGenerateColumns non sarai in grado di controllare la formattazione dato che DataGird aggiungerà le proprie colonne.

Molto tardi per la festa qui, ma nel caso in cui qualcun altro inciampa in questa pagina …

Puoi farlo impostando il gestore di AutoGeneratingColumn in XAML:

  

E poi dietro codice fare qualcosa del genere:

 private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(System.DateTime)) (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy"; } 

Se la proprietà associata è DateTime, allora tutto ciò che serve è

 Binding={Property, StringFormat=d} 

So che la risposta accettata è piuttosto vecchia, ma c’è un modo per controllare la formattazione con AutoGeneratColumns:

Prima crea una funzione che si innesca quando viene generata una colonna:

  

Quindi controlla se il tipo di colonna generata è un DateTime e cambia semplicemente il suo formato String in “d” per rimuovere la parte temporale:

 private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if(YourColumn == typeof(DateTime)) { e.Column.ClipboardContentBinding.StringFormat = "d"; } } 

prima seleziona datagrid e poi vai su properties cerca Datagrid_AutoGeneratingColumn e fai doppio click E poi usa questo codice

  Datagrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyName == "Your column name") (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MMMMMMMMM/yyyy"; if (e.PropertyName == "Your column name") (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MMMMMMMMM/yyyy"; } 

Lo provo funziona su WPF

 Binding="{Binding YourColumn ,StringFormat='yyyy-MM-dd'}"