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


    Silverlight打印全套解决方案--支持打印预览、页面设置(横向纵向,页边距,纸张大小、字体大小)、自动分页和多页连续打印

  • 相关阅读:
    Django基础
    Web框架
    JQuery
    16 Javascript
    axios+qs传值序列化时出现数组形式我们该如何修改呢?
    MyBatis 对象中含有对象的查询
    MyBatis 新增获取自增主键的小坑
    List、Set、Map
    事务的隔离级别
    mybatis配置中文参考文档
  • 原文地址:https://www.cnblogs.com/slmk/p/2230069.html
Copyright © 2011-2022 走看看