wpf表格嵌表格

WPF如何实现表格嵌套表格

用wpf实现了一些功能,一直想整理成博客分享,今天开始行动,希望可以对大家有一点点帮助。
今天我先说一下wpf表格嵌套表格的功能,这个功能是我自己想的,可能有更好的方法欢迎大家指导分享!

首先向在一个列中加入扩展表格的话,我们可以用 DataGridTemplateColumn.CellTemplate  属性来把 DataGrid的列的  cellTemplate设置成datagrid。这样就

实现了表格嵌套表格的功能
那么数据绑定的话,如果大DataGrid用DataTable绑定。那么嵌套表格的列绑定的 DataTable 属性,需要是可以绑定 databageid的类型。
文字描述的不是很好,我们来一个小demo。实现下图效果

预期效果图

首先我们搭建xaml

  <DataGrid Margin="10,0" Focusable="False" Height="120" x:Name="testDataGrid" AutoGenerateColumns="False" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Width="100" Header="姓名" Binding="{Binding name}" IsReadOnly="True"/>
                <DataGridTemplateColumn Header="擅长科目" Width="3*" IsReadOnly="False">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid HeadersVisibility="None" HorizontalScrollBarVisibility="Hidden" ItemsSource="{Binding subject}" VerticalGridLinesBrush="Black" CanUserAddRows="False"/>
                        DataTemplate>
                    DataGridTemplateColumn.CellTemplate>
                DataGridTemplateColumn>
            DataGrid.Columns>
        DataGrid>

cs代码:

            DataTable dt = new DataTable();
            DataColumn nameColumn = new DataColumn("name", typeof(string));            
            dt.Columns.Add(nameColumn);
            DataColumn subjectColumn = new DataColumn("subject", typeof(DataTable));
            dt.Columns.Add(subjectColumn);

            //创建小明的科目Datatable加入到subject的列
            DataTable dSubject1 = new DataTable();

            DataColumn subjectsColumn1 = new DataColumn("subject1", typeof(string));
            dSubject1.Columns.Add(subjectsColumn1);


            dSubject1.Rows.Add("语文");
            dSubject1.Rows.Add("数学");

            //创建小红的科目到subject列
            DataTable dSubject2 = new DataTable();
            DataColumn subjectsColumn3 = new DataColumn("subjec1", typeof(string));
            dSubject2.Columns.Add(subjectsColumn3);
            dSubject2.Rows.Add("语文");
            dSubject2.Rows.Add("英语");

            //将小红和小明加入到总的表
            dt.Rows.Add("小明", dSubject1);
            dt.Rows.Add("小红", dSubject2);

            //绑定数据
            testDataGrid.ItemsSource = dt.DefaultView;

运行效果图:wpf表格嵌表格_第1张图片

读者可以根据自己设计做界面优化。

你可能感兴趣的:(wpf表格嵌表格)