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