Formatage de la date dans la grid de données WPF

J’ai déjà recherché une solution dans stackoverflow et j’ai trouvé ceci:

Besoin de formater les dates dans WPG DataGrid construit dynamicment

Mon problème est que je charge certaines données de ma firebase database SQL-Server et que je souhaite les afficher dans mon application WPF dans un DataGrid. Cela fonctionne très bien. La seule chose que je veux changer est que la colonne de date est au format “JJ / MM / AAAA HH: MM: SS” et je veux avoir “JJ.MM.AAAA”. Ok, alors j’ai regardé le lien ci-dessous et l’ai essayé dans mon programme:

       <!--  -->   

La partie hors commentaires est ma solution mais elle génère une exception XMLParseException. Tout d’abord, cette solution est-elle possible lors de l’utilisation d’AutoGenerateColumns? Si non, comment puis-je essayer de gérer cela? Si oui, quel est le problème avec le code ci-dessus?

EDIT: Ma question n’est pas résolue parce que j’ai décidé de ne pas reconstruire mon application, n’y a-t-il pas de solution avec AutoGenerateColumns = true?

N’oubliez pas d’utiliser DataGrid.Columns, toutes les colonnes doivent se trouver dans cette collection. Dans mon projet, je formate un peu différemment la date:

      

Avec AutoGenerateColumns, vous ne pourrez pas contourner le formatage car DataGird appenda ses propres colonnes.

Très tard à la fête ici, mais au cas où quelqu’un d’autre trébucherait sur cette page …

Vous pouvez le faire en définissant le gestionnaire AutoGeneratingColumn dans XAML:

  

Et puis, derrière le code, faites quelque chose comme ceci:

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

Si votre propriété liée est DateTime, tout ce dont vous avez besoin est

 Binding={Property, SsortingngFormat=d} 

Je sais que la réponse acceptée est assez ancienne, mais il existe un moyen de contrôler le formatage avec AutoGeneratColumns:

Commencez par créer une fonction qui se déclenchera lorsqu’une colonne est générée:

  

Ensuite, vérifiez si le type de la colonne générée est un DateTime et modifiez simplement son format Ssortingng en “d” pour supprimer la partie heure:

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

sélectionnez d’abord la grid de données, puis allez dans les propriétés trouvez Datagrid_AutoGeneratingColumn et double cliquez sur Et utilisez ce code

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

Je l’essaie ça marche sur WPF

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