记一次WPF的DataGrid绑定数据
之前一直在用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代码截图:

记一次WPF的DataGrid绑定数据的更多相关文章
- WPF DataGrid 绑定数据及时更新的处理
原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象 ...
- WPF的DataGrid绑定ItemsSource后第一次加载数据有个别列移位的解决办法
最近用WPF的DataGrid的时候,发现一个很弱智的问题,DataGrid的ItemsSource是绑定了一个属性: 然后取数给这个集合赋值的时候,第一次赋值,就会出现列移位 起初还以为是显卡的问题 ...
- wpf中datagrid绑定数据源发生改变
1.若datagrid绑定的数据源是同一个的话,即使里面的数据不同.页面也不会刷新,则需要重置数据源,再绑定.处理如下: datagrid1.ItemsSource=ListModule; 若List ...
- wpf之DataGrid绑定DataTable,其中DataGridComboBoxColumn双向绑定枚举enum
百度了快一天,没结果,除了几个原创的,都是复制粘贴的内容. 不想用别的笨办法,于是脑洞大开,想出了我的办法. 首先是前台代码,与网上的比较类似: xmlns:jz="clr-namespac ...
- WPF中RadioButton绑定数据的正确方法
RadioButton一般用于单选的时候,也就是从一组值中选择一个值. 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女. 这种时候一般就会用到RadioBut ...
- Easyui datagrid绑定数据,新增,修改,删除方法(一)
@{ ViewBag.Title = "UsersList"; } <script type="text/javascript"> $(functi ...
- Easyui datagrid绑定数据,新增,修改,删除写法
@{ ViewBag.Title = "xw_xsfl"; } <script type="text/javascript"> var editIn ...
- 基于Easyui框架的datagrid绑定数据,新增,修改,删除方法(四)
@{ ViewBag.Title = "xxlist"; } <script type="text/javascript" language=" ...
- WPF:Hyperlink如何绑定数据
<TextBlock> <Hyperlink> <Run Text="{Binding PCFolderPath, Mode=OneWay}"/> ...
- WPF中DataGrid的ComboBox的简单绑定方式(绝对简单)
在写次文前先不得不说下网上的其他wpf的DataGrid绑定ComboBox的方式,看了之后真是让人欲仙欲死. 首先告诉你一大堆的模型,一大堆的控件模板,其实或许你紧紧只想知道怎么让combobox怎 ...
随机推荐
- Mysql数据库未添加索引引发的生产事故
最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块, 在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的数据.总共有四五 个地方如果出现增 ...
- python中把列表中的字符串转成整型的几种方法
python中在不同类型数据转换方面是有标准库的,使用非常方便.但是在开发中,经常在list中字符转成整形的数据方便遇到问题.这里就记录一下常用的几种方法. 方法一:最基本的方法:通过轮训整个list ...
- 反编译和逆向出现:java.lang.VerifyError(新问题样本)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Linux Socket 摘要(二)(基于TCP的C/S基本实现,相关基础知识,非阻塞select)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Performance Improvements in .NET 8 -- Native AOT & VM & GC & Mono【翻译】
原生 AOT 原生 AOT 在 .NET 7 中发布.它使 .NET 程序在构建时被编译成一个完全由原生代码组成的自包含可执行文件或库:在执行时不需要 JIT 来编译任何东西,实际上,编译的程序中没有 ...
- 【2311. 小于等于 K 的最长二进制子序列】贪心
class Solution { public static void main(String[] args) { Solution solution = new Solution(); System ...
- 00-【K210】API资料、电气接线图、PCB文件
K210的接口说明文档 API接口文档: 链接:https://pan.baidu.com/s/1mlzYRJYQIeHSEMysp_v4cg?pwd=pjmv 提取码:pjmv 2.原理图.PCB文 ...
- package.json报错"No license field"问题解决
问题描述 warning package.json: No license field 问题原因 package.json中缺少license字段 解决方法 package.json中添加licens ...
- [Java]Socket套接字(网络编程入门)
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/129907893 出自[进步* ...
- C# 剪裁图片
/// <summary> /// 剪裁图片 /// </summary> /// <param name="src">原图片</para ...