Date formatting in WPF datagrid
I want to change is the date column from a format "DD/MM/YYYY HH:MM:SS" to "DD.MM.YYYY".
<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>
Unfortunately that code throws an XMLParseException
.
First of all, is this way of solution possible while using AutoGenerateColumns? If no, how else can I try to handle this?
If yes, what is the problem with the code above?
Solution 1:
Don`t forget to use DataGrid.Columns, all columns must be inside that collection. In my project I format date a little bit differently:
<tk:DataGrid>
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Binding="{Binding StartDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" />
</tk:DataGrid.Columns>
</tk:DataGrid>
With AutoGenerateColumns you won`t be able to contol formatting as DataGird will add its own columns.
Solution 2:
Very late to the party here but in case anyone else stumbles across this page...
You can do it by setting the AutoGeneratingColumn handler in XAML:
<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn" ..etc.. />
And then in code behind do something like this:
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(System.DateTime))
(e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
}
Solution 3:
If your bound property is DateTime, then all you need is
Binding={Property, StringFormat=d}
Solution 4:
Binding="{Binding YourColumn ,StringFormat='yyyy-MM-dd'}"
Solution 5:
first select datagrid and then go to properties find Datagrid_AutoGeneratingColumn and the double click And then use this 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";
}
I try it it works on WPF