Silverlight的DataGrid实现列标题和单元格换行
2011-10-31 14:40 slmk 阅读(2419) 评论(2) 编辑 收藏 举报silverlight的DataGrid控件默认就是单行文本到头,如果设置了列的长度,文本会被截断不显示。如何实现长文本自动换行?我们首先想到的是利用Style,因为换行只是外观的改变,不是行为的改变。
1、标题换行:
<Style TargetType="prim:DataGridColumnHeader" x:Key="aHeaderStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}" TextWrapping="Wrap" FontFamily="Verdana" FontSize="12" TextAlignment="Center" HorizontalAlignment="Center"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
其中prim名称空间是:xmlns:prim="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
应用Style:
<sdk:DataGrid AutoGenerateColumns="True" AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn"
ColumnHeaderStyle="{StaticResource aHeaderStyle}"
Height="162" HorizontalAlignment="Left" Margin="18,82,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="150">
2、单元格换行:
<Style x:Key="aCellStyle" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
应用Style:
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="this is a long text need wrap" Width="1.0*" ElementStyle="{StaticResource aCellStyle}" Binding="{Binding Name}"/>
</sdk:DataGrid.Columns>
效果如图:
需要注意的是DataGrid或者是DataGridColumn的Width不能都是Auto,也就是必须制定一个宽度,不管是具体数值还是比例。否则,只会出现一个水平滚动条,而没有换行。
Silverlight打印全套解决方案--支持打印预览、页面设置(横向纵向,页边距,纸张大小、字体大小)、自动分页和多页连续打印