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; } // 班级名称
}