Silverlight之DataGrid的列格式化日期

 <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进行格式化

<sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto"Binding="{Binding OpenTimeEnd, StringFormat=yyyy/MM/dd}" Header="结束时间" IsReadOnly="True"/>

 

"{0:d}" 结果为:2010-6-19 (月份位置不是06)

"{0:D}" 结果为:2010年6月19日

"{0:f}" 结果为:2010年6月19日 20:30

"{0:F}" 结果为:2010年6月19日 20:30:10

"{0:g}" 结果为:2010-6-19 20:30

"{0:G}" 结果为:2010-6-19 20:30:10

"{0:m}" 结果为:6月19日

"{0:t}" 结果为:20:30

"{0:T}" 结果为:20:30:10

"{0:yyyy-MM-dd HH:mm}"结果为:2010-6-19 20:30

"{0:yyyy-MM-dd }" 结果为:2010-6-19

转载:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值