软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 电脑教程 > 编程开发 > .NET技术 > Silverlight的DataGrid实现列标题和单元格换行

Silverlight的DataGrid实现列标题和单元格换行

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,也就是必须制定一个宽度,不管是具体数值还是比例。否则,只会出现一个水平滚动条,而没有换行。

(来源:博客园 作者:slmk)

    相关阅读
    网友评论