WPF —— DataGrid数据网格

1 :DataGrid简介

DataGrid 是数据网格 : 可以显示网格数据的控件,通过自定义列模版 来去实现各种网格效果 , 可以使用以下几中标签显示不同数据

2 :DataGrid常用的组件

显示文本: DataGridTextColumn
显示复选框: DataGridCheckoBoxColumn
下拉框: DataGridComboBoxColumn
超链接: DataGridHyperlinkColumn 等

属性

ItemsSource:绑定数据
itemTemplate:绑定模板的属性"{StaticResource d1}"

AutoGenerateColumns 是否自动生成列 设置为false不会自动生成列

AutoGenerateColumns 是否删除行

CanUserSortColums 是否允许列进行排序

GridLinesVisibility设置网格线

3 关于DataGrid的实例

设置单元格的样式

 <DataGrid FontSize="30" Name="d1" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserSortColumns="False"
           GridLinesVisibility="All">
     
     <!--设置单元格的样式-->
     <DataGrid.CellStyle>
         <!--TargetType 给单元格设置样式-->
         <Style TargetType="DataGridCell">
             <Setter Property="HorizontalAlignment"
                     Value="Center">
                     
             </Setter>
         </Style>
     </DataGrid.CellStyle> 

设置列 设置表头 文本列,显示的数据可以通过bind进行绑定

<DataGrid.Columns>
    <DataGridTextColumn Header="姓名" Width="200" Binding="{Binding Name}">
        
        <DataGridTextColumn.ElementStyle>
            <Style TargetType="TextBlock">
                <Setter Property="HorizontalAlignment"
                        Value="Center" />
                <Setter Property="HorizontalAlignment"
                        Value="Center" />
            </Style>
        </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>

    <DataGridTextColumn Header="年龄" Width="200"
                        Binding="{Binding Age}">
        <DataGridTextColumn.ElementStyle>
            <Style TargetType="TextBlock">
                <Setter Property="HorizontalAlignment"
                        Value="Center" />
                <Setter Property="HorizontalAlignment"
                        Value="Center" />
            </Style>
        </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>

复选框列

<DataGridCheckBoxColumn Header="婚否"
                        Binding="{Binding Mary}">
    <DataGridCheckBoxColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="HorizontalAlignment"
                    Value="Center" />
            <Setter Property="HorizontalAlignment"
                    Value="Center" />
        </Style>
    </DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>

下拉框列 设置默认值的时候通过
                标签添加绑定SelectedValueBinding=" {Binding ClassId}在后台添加this.c1.SelectedValuePath = "ClassId";

<DataGridComboBoxColumn Header="班级" x:Name="c1" SelectedValueBinding="{Binding ClassId}">
    
</DataGridComboBoxColumn>

自定义列

    <DataGridTemplateColumn>
        <!--自定义列的标题-->
        <DataGridTemplateColumn.Header>
            <TextBlock>编号</TextBlock>
        </DataGridTemplateColumn.Header>
        
        <!--自定义单元格的模版-->
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding ClassID}"></TextBlock>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
        
    </DataGridTemplateColumn>
    
</DataGrid.Columns>

设置模型类 

List<Student> list1 = new List<Student>();
list1.Add(new Student()
{
    Name = "黑大帅",
    Age = 17,
    Marry = true,
    ClassId = "1000"
});

list1.Add(new Student()
{
    Name = "赵丽颖",
    Age = 17,
    Marry = true,
    ClassId = "1001"
});

list1.Add(new Student()
{

    Name = "普京",
    Age = 17,
    Marry = true,
    ClassId = "1002"
});

// 整理第二个数据源
List<BanJi> list2 = new List<BanJi>();
list2.Add(new BanJi() { ClassId = "1000", ClassName = "上位机" });
list2.Add(new BanJi() { ClassId = "1001", ClassName = "C#软件开发" });

// 网格的整体数据源
this.d1.ItemsSource = list1;

// 针对班级处理数据源 设置班级下拉框数据源为list2
this.c1.ItemsSource = list2;
this.c1.DisplayMemberPath = "ClassName"; // 展示班级名
this.c1.SelectedValuePath = "ClassId"; // 选中上位机选项时候,获取select属性时候值是1000SelectedValueBinding="{Binding ClassId}"在后台 添加  this.c1.SelectedValuePath = "ClassId";

this.d1.ItemsSource = list1;
public class Student
{
    public string Name { get; set; }    //学生姓名
    public int Age { get; set; }     // 年龄

    public bool Marry {  get; set; } // 婚否

    public string ClassId {  get; set; } // 班级编号

}
public class BanJi
{
    public string ClassId { get; set; } // 班级编号
    public string ClassName {  get; set; } // 班级名称
}

相关推荐

  1. WPF —— DataGrid数据网格

    2024-03-22 17:34:02       41 阅读
  2. jEasyUI 转换 HTML 表格为数据网格

    2024-03-22 17:34:02       27 阅读
  3. php 获取网页数据

    2024-03-22 17:34:02       32 阅读
  4. 神经网络——数据预处理

    2024-03-22 17:34:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 17:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 17:34:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 17:34:02       82 阅读
  4. Python语言-面向对象

    2024-03-22 17:34:02       91 阅读

热门阅读

  1. 【统计学】独立同分布

    2024-03-22 17:34:02       27 阅读
  2. 工作中常用的git命令

    2024-03-22 17:34:02       35 阅读
  3. 后端开发辅助

    2024-03-22 17:34:02       41 阅读
  4. 【无人机综合考试题】

    2024-03-22 17:34:02       158 阅读
  5. 查找 Oracle 数据库中对象失效的原因和时间?

    2024-03-22 17:34:02       44 阅读
  6. 如何下载和安装 macOS

    2024-03-22 17:34:02       31 阅读
  7. 山东高新技术企业的审查流程

    2024-03-22 17:34:02       39 阅读
  8. python常见的异常类型

    2024-03-22 17:34:02       44 阅读
  9. C语言实现射击小游戏

    2024-03-22 17:34:02       39 阅读
  10. Leetcode 448. 找到所有数组中消失的数字

    2024-03-22 17:34:02       40 阅读