• Silverlight之DataGrid的列格式化日期


    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进行格式化,这个没什么说的,代码已贴出,有什么不足的地方欢迎大家指正。



  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/majunfeng/p/3933810.html
Copyright © 2020-2023  润新知