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

WPF MVVM 中处理 DataGrid 数据有几个步骤: 1. 创建一个 ViewModel 类来管理 DataGrid数据。这个 ViewModel 类应该实现 INotifyPropertyChanged 接口,以便在数据改变时通知 View 更新。 2. 在 XAML 中创建 DataGrid 控件,并绑定到 ViewModel 的数据属性。可以使用 ItemsSource 属性将数据集合绑定到 DataGrid。 3. 在 ViewModel 中创建一个数据集合属性,用于存储 DataGrid数据。这个属性应该是一个 ObservableCollection<T> 类型,其中 T 是 DataGrid 中每一行的数据模型类。 4. 在 ViewModel 中,通过命令或其他方式获取要显示在 DataGrid 中的数据,并将其添加到数据集合属性中。 5. 可以使用数据绑定和转换器来设置 DataGrid 的列样式和格式。例如,可以使用 DataGridTextColumn 来显示文本数据,或者使用 DataGridTemplateColumn 来自定义列。 6. 在 ViewModel 中,可以处理 DataGrid 中的用户交互事件,例如选中行或编辑单元格。可以使用命令来处理这些事件,并在需要时更新数据集合属性。 7. 可以在 ViewModel 中添加一些数据处理逻辑,例如排序、过滤或分页。可以通过操作数据集合属性来实现这些功能,并通过绑定更新 DataGrid。 总的来说,WPF MVVM 中处理 DataGrid 数据需要创建一个 ViewModel 类来管理数据,并通过数据绑定将其与 DataGrid 控件关联起来。然后,在 ViewModel 中处理数据的增删改查操作,并使用命令和事件处理来实现用户交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值