分享

WPF 用DataTemplate代以处理单元格合并的多头表格

 贾朋亮博客 2011-12-24
 学习笔记:在WPF中用xaml语言处理多重表头的表格时遇到问题,不知从何下手,查阅很多资料,但都是基于.net4.0版本以下平台的,多为3.0 3.5版本,与4.0版本不知如何对应,恰想到用数据模板代以解决,以下是菜鸟级别的学习笔记。(一直是菜鸟,从未飞起来...囧)

        重点:在表格的一个表头上应用一个模板,在其列内容上应用另一个模板。
1、建立数据示例。
表格项目有:序号、姓名、性别、联系电话、联系邮箱1、联系邮箱2
数据自拟
注:联系邮箱1与邮箱2将作为“联系邮箱”下的二级表头
2、用xaml建立DataGrid。
        <DataGrid   
                DataContext="{Binding Source={StaticResource DataBase_1}}"    
                ItemsSource="{Binding Collection}">
                        <DataGrid.Columns>
                                //填充表格内容(步骤5)
                        </DataGrid.Columns>
        </DataGrid>
3、用xaml写表头的数据模板。
        <DataTemplate x:Key="multipleTable_Header"> 
                <StackPanel HorizontalAlignment="Stretch" 
                                VerticalAlignment="Stretch"> 
                        <Border>
                                <Label Content="邮箱" Width="340" 
                                        HorizontalContentAlignment="Center"/> 
                        </Border>
                        <Border>
                                <GridSplitter BorderBrush="Black"
                                        BorderThickness="0.5"
                                        HorizontalAlignment="Stretch"/>
                        </Border>
                        <Border>
                                <StackPanel Width="340" Orientation="Horizontal"> 
                                        <Label Content="邮箱1" Width="170" 
                                                HorizontalContentAlignment="Center"
                                                VerticalContentAlignment="Center"/>
                                        <GridSplitter BorderBrush="Black"
                                                BorderThickness="0.5"/>
                                        <Label Content="邮箱2" Width="170" 
                                                HorizontalContentAlignment="Center"
                                                VerticalContentAlignment="Center"/>
                                </StackPanel>
                        </Border>
                </StackPanel>
                </DataTemplate>
4、用xaml写表列的数据模板。
        <DataTemplate x:Key="multipleTable_Clomns" >
                <StackPanel Width="Auto" Height="Auto" Orientation="Horizontal">
                        <Border>
                                <TextBlock Margin="1,0,1,0"  Width="170"
                                        Text="{Binding 邮箱1}"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"/>
                        </Border>
                        <Border>
                                <GridSplitter Background="Black" 
                                        BorderThickness="0.5"
                                        BorderBrush="Black"
                                        Margin="0,-1,0,-1"/>
                        </Border>
                        <Border>
                                <TextBlock Margin="1,0,1,0"  Width="170"
                                        Text="{Binding 邮箱2}"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"/>
                        </Border>
                </StackPanel>
        </DataTemplate>
5、在DataGrid中填充列内容。
        <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding 序号}" Header="序号"/>
                <DataGridTextColumn Binding="{Binding 姓名}" Header="姓名"/>
                <DataGridTextColumn Binding="{Binding 性别}" Header="性别"/>
                <DataGridTextColumn Binding="{Binding 电话}" Header="电话"/>
                <DataGridTemplateColumn 
                        HeaderTemplate="{StaticResource multipleTable_Header}"
                        CellTemplate="{StaticResource multipleTable_Clomns}"/>
        </DataGrid.Columns>
效果图:
WPF <wbr>用DataTemplate代以处理单元格合并的多头表格

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多