68 votes

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

Je veux changer la colonne de date d'un format "JJ/MM/AAAA HH:MM:SS" en "JJ.MM.AAAA".

   <DataGrid Name="dgBuchung" AutoGenerateColumns="True" 
            ItemsSource="{Binding}" Grid.ColumnSpan="3" >
  <ab:DataGridTextColumn Header="Fecha Entrada" Width="110"  
       Binding="{Binding date, StringFormat={}{0:dd/MM/yyyy}}" IsReadOnly="True" />
                        
</DataGrid>
                                      

Malheureusement, ce code renvoie un XMLParseException .

Tout d'abord, cette solution est-elle possible en utilisant AutoGenerateColumns ? Si non, comment puis-je essayer de gérer cela autrement ?

Si oui, quel est le problème avec le code ci-dessus ?

128voto

icebat Points 4113

N'oubliez pas d'utiliser DataGrid.Columns, toutes les colonnes doivent être à l'intérieur de cette collection. Dans mon projet, je formate la date un peu différemment :

 <tk:DataGrid>
    <tk:DataGrid.Columns>
        <tk:DataGridTextColumn Binding="{Binding StartDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" />
    </tk:DataGrid.Columns>
</tk:DataGrid>

Avec AutoGenerateColumns, vous ne pourrez pas contrôler le formatage car DataGird ajoutera ses propres colonnes.

108voto

Mark Feldman Points 1602

Très tard pour la fête ici mais au cas où quelqu'un d'autre tomberait sur cette page...

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

 <DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn"  ..etc.. />

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

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

18voto

Terence Points 51

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

 Binding={Property, StringFormat=d}

5voto

Dan Andrews Points 41
Binding="{Binding YourColumn ,StringFormat='yyyy-MM-dd'}"

2voto

ANIL AYDINALP Points 21

sélectionnez d'abord datagrid, puis accédez aux propriétés, recherchez Datagrid_AutoGeneratingColumn et double-cliquez sur Et puis utilisez ce code

    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";
            }

j'essaye ça marche sur WPF

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X