To format date in datagrid column in silverlight
-
In my datagrid the date is displayed with time , how to format it and display in dd/MM/yyyy format . Help me please
If you are binding to collection of custom objects such as Person and that class has a property such as BirthDate you could do the following: First, create DateTimeConverter class as such: Imports System.Windows.Data Public Class DateTimeConverter Implements IValueConverter Public Function Convert(ByVal value As Object, _ ByVal targetType As System.Type, _ ByVal parameter As Object, _ ByVal culture As System.Globalization.CultureInfo) As Object _ Implements System.Windows.Data.IValueConverter.Convert Dim DateValue As DateTime = value Return DateValue.ToShortDateString() End Function Public Function ConvertBack(ByVal value As Object, _ ByVal targetType As System.Type, _ ByVal parameter As Object, _ ByVal culture As System.Globalization.CultureInfo) As Object _ Implements System.Windows.Data.IValueConverter.ConvertBack Dim StrValue As String = value.ToString() Dim ResultDateTime As DateTime If DateTime.TryParse(StrValue, ResultDateTime) Then Return ResultDateTime End If Return value End Function End Class Next, add xmlns to to your projects namespace so you can get reference to your new class such as: xmlns:local="clr-namespace:Silverlight_DataGrid" Next, depending on what type of control you are using to bind to, add reference to your converter for date column. In this case, I have single column in grid, which is bound to DataGridTextColumn. The property in my class i'm binding to is BirthDate. <data:DataGrid x:Name="myDataGrid" Grid.Row="1" AlternatingRowBackground="AliceBlue" Background="WhiteSmoke" BorderBrush="DarkBlue" BorderThickness="2" CanUserResizeColumns="True" CanUserSortColumns="True" Opacity="8" AutoGenerateColumns="False"> <data:DataGrid.Columns> <data:DataGridTextColumn Binding="{Binding BirthDate, Converter={StaticResource DateConverter}}" /> </data:DataGrid.Columns> </data:DataGrid>
Troy Johnson www.anothercodesite.com/blog
-
If you are binding to collection of custom objects such as Person and that class has a property such as BirthDate you could do the following: First, create DateTimeConverter class as such: Imports System.Windows.Data Public Class DateTimeConverter Implements IValueConverter Public Function Convert(ByVal value As Object, _ ByVal targetType As System.Type, _ ByVal parameter As Object, _ ByVal culture As System.Globalization.CultureInfo) As Object _ Implements System.Windows.Data.IValueConverter.Convert Dim DateValue As DateTime = value Return DateValue.ToShortDateString() End Function Public Function ConvertBack(ByVal value As Object, _ ByVal targetType As System.Type, _ ByVal parameter As Object, _ ByVal culture As System.Globalization.CultureInfo) As Object _ Implements System.Windows.Data.IValueConverter.ConvertBack Dim StrValue As String = value.ToString() Dim ResultDateTime As DateTime If DateTime.TryParse(StrValue, ResultDateTime) Then Return ResultDateTime End If Return value End Function End Class Next, add xmlns to to your projects namespace so you can get reference to your new class such as: xmlns:local="clr-namespace:Silverlight_DataGrid" Next, depending on what type of control you are using to bind to, add reference to your converter for date column. In this case, I have single column in grid, which is bound to DataGridTextColumn. The property in my class i'm binding to is BirthDate. <data:DataGrid x:Name="myDataGrid" Grid.Row="1" AlternatingRowBackground="AliceBlue" Background="WhiteSmoke" BorderBrush="DarkBlue" BorderThickness="2" CanUserResizeColumns="True" CanUserSortColumns="True" Opacity="8" AutoGenerateColumns="False"> <data:DataGrid.Columns> <data:DataGridTextColumn Binding="{Binding BirthDate, Converter={StaticResource DateConverter}}" /> </data:DataGrid.Columns> </data:DataGrid>
Troy Johnson www.anothercodesite.com/blog