DataGrid最常用的两种格式化日期,先看下效果
看下XAML页面的数据绑定
<sdk:DataGrid AutoGenerateColumns="False" Height="500" HorizontalAlignment="Left" Margin="10" Name="dataGrid1" VerticalAlignment="Top" Width="auto"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding Name}" Header="名称" IsReadOnly="True"/> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding ScoreType}" Header="积分类型" IsReadOnly="True"/> <!--自定义转换日期格式类--> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding Path=OpenTimeStart,Converter={StaticResource FormatConverter},ConverterParameter=\{0:d\}}" Header="开放时间" IsReadOnly="True" /> <!--直接使用StringFormat进行格式化--> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding OpenTimeEnd, StringFormat=yyyy/MM/dd}" Header="结束时间" IsReadOnly="True"/> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding Remark}" Header="备注" IsReadOnly="True"/> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding IsTop}" Header="是否置顶" IsReadOnly="True"/> <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding Links}" Header="链接" IsReadOnly="True"/> </sdk:DataGrid.Columns> </sdk:DataGrid>第一种自定义转换日期格式类,需要先写一个用于转换日期的类DataFormatters,并且实现了IValueConverter接口,下面贴出DataFormatters类的转换代码
public class DataFormatters : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { //下面可以自行把value格式化成你想要的格式 //以下是我把传进来的值按照日期类型格式化的 value = DateTime.Parse(value.ToString()).ToString("yyyy-MM-dd"); return value.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } }这个转换类写好后怎么用呢?只要放在在你的DataGrid需要显示数据列表的XAML页面,供你的DataGrid调用即可,比如我们可以设置为Grid数据控件的Resources
<Grid.Resources> <ConvertDate:DataFormatters x:Key="FormatConverter"/> </Grid.Resources>当然我们引用那个转换类时要引用下命名空间啦,不然是找不到你定义的转换类的
xmlns:ConvertDate="clr-namespace:SilverlightClassLibrary;assembly=SilverlightClassLibrary"第二种直接使用StringFormat进行格式化,这个没什么说的,代码已贴出,有什么不足的地方欢迎大家指正。