DataGrID里的列可以很方便的绑定到数据源里的某个属性,但是有时候需要格式化这个属性值的显示,比较典型的就是属性是DateTime类型的,当只想显示以特定格式显示日期部分,这个时候怎么做呢?
首先,按正常的绑定如下:
<data:DataGrID GrID.Row="0" x:name="grIDWorkflow" CanUserSortColumns="True" FroZenColumnCount="2" autoGenerateColumns="False" IsReadonly="True" borderThickness="1,1,1" SelectionChanged="grIDWorkflow_SelectionChanged"> <data:DataGrID.Columns> <data:DataGrIDTextColumn header="日期" Binding="{Binding ValIDFrom}"> </data:DataGrIDTextColumn> </data:DataGrID.Columns> </data:DataGrID>
其次,我们必须定义一个转换类,该类必须实现IValueConverter接口,如下:
public class DateConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture) { DateTime date = (DateTime)value; return date.ToString("yyyy-MM-dd"); } public object ConvertBack(object value, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion }
其中的Convert方法就是指定怎么格式化数据的。
然后在用户控件里定义一个资源来实例化这个类:
<UserControl.Resources> <AoyaWorkflow:DateConverter x:Key="dc"/> </UserControl.Resources>
最后就是使用这个资源了,如下:
<data:DataGrID GrID.Row="0" x:name="grIDWorkflow" CanUserSortColumns="True" FroZenColumnCount="2" autoGenerateColumns="False" IsReadonly="True" borderThickness="1,1" SelectionChanged="grIDWorkflow_SelectionChanged"> <data:DataGrID.Columns> <data:DataGrIDTextColumn header="日期" Binding="{Binding ValIDFrom, Converter={StaticResource dc}}"> </data:DataGrIDTextColumn> </data:DataGrID.Columns> </data:DataGrID>可能第一次用起来会有些繁琐,不过用过就马上可以掌握了。
总结以上是内存溢出为你收集整理的silverlight之How To:格式化DataGrid里的列显示全部内容,希望文章能够帮你解决silverlight之How To:格式化DataGrid里的列显示所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)