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進行格式化,這個沒什麼說的,代碼已貼出,有什麼不足的地方歡迎大家指正。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章