记一次WPF的DataGrid绑定数据

记一次WPF的DataGrid绑定数据 DataGrid 绑定数据 Data Grid 记一次 WPF

之前一直在用winform,但是感觉界面不好看,然后就自己在网上学习WPF。一开始看到DataGrid的时候,还以为它是DataGridView,然后用winform的方法绑定数据发现不行,在不断的查找之后,终于学会了怎么简单的绑定数据。

工具:VStudio2022
框架:.net framework 4.8

新建一个WPF窗体,再把DataGrid拖到窗体上之后,在.xaml那给它配置name属性dataGrid

由于我是想自己手动建列,所以把AutoGenerateColumns属性设置为false,如果不想手动设置列,直接默认为true就好了

随后新建三列

添加完成之后,新建一个类,这个类就是要绑定到DataGrid的实体,
新建Person类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}

建完之后,给刚刚那三列绑定Person的属性
(这里就很麻烦,必须要手动绑定,如果不是建的列,就不需要绑定)

<DataGridTextColumn Binding ="{ Binding Name }" Header="第一个文本"/>
<DataGridTextColumn Binding ="{ Binding Age }" Header="第二个文本"/>
<DataGridTextColumn Binding ="{ Binding City }" Header="第三个文本"/>

绑定完之后,去到这个xaml的cs代码那里,在窗体类下面将Person实例化:
ObservableCollection<Person> People = new ObservableCollection<Person>();

这里用的是ObservableCollection,问的AI,解释是

“这里使用了 ObservableCollection 而不是普通的集合类型,因为 ObservableCollection 实现了 INotifyCollectionChanged 接口,这意味着当集合中的项发生变化时,UI 将自动更新以反映这些变化。”

我理解的是当People里面的数据发生变化后,DataGrid界面上也会发生变化;我一开始用的是List,但是这样的话,People的数据发生变化了,DataGrid界面却不会发生变化。

然后在初始化的时候,给People增加一些初始数据
People = new ObservableCollection<Person>()
{
// 预先添加一些示例数据
new Person() { Name = "张三", Age = 30, City = "北京" },
new Person() { Name = "李四", Age = 28, City = "上海" }
};

然后直接绑定到dataGrid上
dataGrid.ItemsSource = People;

运行效果图:

然后增加一个点击按钮事件那里加上
People.Add(new Person() { Name = "新用户", Age = 25, City = "广州" });

.cs代码截图:

评论