在 Rad Silverlight Gridview 和 Silverlight Gridview 的自动生成列中对齐文本






4.80/5 (2投票s)
在 Rad Silverlight Gridview 和 Silverlight Gridview 的自动生成列中对齐文本
在本文中,我将展示如何在 Silverlight GridView 以及 Rad Control Silverlight GridView 的自动生成列单元格中对齐数据。在下面两个 GridView 的示例中,我希望将单元格中的数字数据靠左对齐,其他非数字数据保持原有格式。
RAD Silverlight GridView Silverlight GridView 的 XAML 代码
<telerik:RadGridView Name="clubsGrid" ItemsSource="{Binding Clubs}" AutoGeneratingColumn="clubsGrid_AutoGeneratingColumn" Margin="5"> </telerik:RadGridView>这里需要注意的一点是在 XAML 代码中,我注册了 AutoGeneratingColumn = "clubsGrid_AutoGeneratingColumn" 事件,该事件将在自动生成 GridView 的列时被调用。
private void clubsGrid_AutoGeneratingColumn(object sender, GridViewAutoGeneratingColumnEventArgs e) { GridViewDataColumn column = e.Column as GridViewDataColumn; if (column.DataType == typeof(int) || column.DataType == typeof(decimal) || column.DataType == typeof(float) ) { column.TextAlignment = TextAlignment.Right; } }
如上代码所示,我将 AutoGeneratingColumn 事件附加到 GridView 控件上,并检查每列的 DataType,进而检查将要附加到该列的属性的 DataType。因此,当 DataType 为 int 或 decimal 或 float 时,我将列的 TextAlignment 属性设置为 Right,以便将数字值靠右显示。
输出
因此,输出结果显示,数值列“StadiumCapacity”已对齐到右侧。
Silvelight SDK GridView 控件
有几种方法可以在 Silverlight GridView 中实现这一点
1) 从代码隐藏文件中设置单元格样式,但创建 Style
2) 从代码隐藏文件中设置单元格样式,但使用资源
Silverlight GridView 的 XAML 代码
<sdk:DataGrid IsReadOnly="True" Name="mysGrid" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn" ItemsSource="{Binding Clubs, Mode=OneWay}"> </sdk:DataGrid>
与 RAD GridView 类似,这里也编写了 AutoGeneratingColumn="DataGrid_AutoGeneratingColumn",它负责自动生成的列。
第一种方法:创建 Style
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(int) || e.PropertyType == typeof(decimal) || e.PropertyType == typeof(float) ) { var rightCellStyle = new Style(typeof(DataGridCell)); rightCellStyle.Setters.Add(new Setter( Control.HorizontalContentAlignmentProperty, HorizontalAlignment.Right)); DataGridBoundColumn obj = e.Column as DataGridBoundColumn; obj.CellStyle = rightCellStyle; }}
如上代码所示,与 RAD GridView 控件类似,这里也使用 e.PropertyType 来检查自动生成列的类型,但不同之处在于需要创建单元格样式,然后将样式分配给 GridView 列的 CellStyle 属性。
第二种方法:使用资源
在此解决方案中,您需要在 App.XAML 中注册 GridView 单元格的样式,如下所示,然后可以使用它来分配给 CellStyle。
App.XAML 中的资源
<Style x:Key="RightCellStyle" TargetType="sdk:DataGridCell"> <Setter Property="HorizontalContentAlignment" Value="Right" /> </Style>代码隐藏文件
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(int) || e.PropertyType == typeof(decimal) || e.PropertyType == typeof(float) ) { DataGridBoundColumn obj = e.Column as DataGridBoundColumn; var rightCellStyle = Application.Current.Resources["RightCellStyle"] as Style; obj.CellStyle = rightCellStyle; } }
现在,在此代码中,您不需要创建任何样式,只需获取在 App.XAML 文件中注册的资源,并将其转换为 Style 即可。
输出
因此,输出结果显示,数值列“StadiumCapacity”已对齐到右侧。
注意:两种方法输出结果相同。
来源: http://pranayamr.blogspot.in/2012/07/align-text-in-autogenerated-column-of.html