首页 > 其他分享 >记一次WPF的DataGrid绑定数据

记一次WPF的DataGrid绑定数据

时间:2024-03-28 13:59:40浏览次数:34  
标签:ObservableCollection People 绑定 DataGrid Person new 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代码截图:

标签:ObservableCollection,People,绑定,DataGrid,Person,new,WPF
From: https://www.cnblogs.com/wuchen9527/p/18101207

相关文章

  • 【wpf】ListBoxItemIndexConverter转换器listbox序号自更新
    publicclassListBoxItemIndexConverter:IMultiValueConverter{publicobjectConvert(object[]values,TypetargetType,objectparameter,CultureInfoculture){stringindexPrefix=null;if(parameter!=null&&parameter......
  • WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页
    1.在DataGrid中添加PreviewMouseWheel事件,并将事件的Handled属性设置为false,以便将滚动事件传递给ScrollViewer。示例代码如下:<DataGridPreviewMouseWheel="DataGrid_PreviewMouseWheel"><!--DataGrid的其他设置--></DataGrid>privatevoidDataGrid_PreviewMouseWh......
  • 2-15. 绑定 Editor Window 中的参数变量
    点击左侧的东西时同步右侧的内容修改图片项目相关代码代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git标签:20240327_2028......
  • RT路由器 serial 口ppp multilink 绑定接口配置
    配置MutlilinkPPP捆绑,编号为1interfacemultilink1                   ipadd192.168.100.1255.255.255.0   pppmultilink                                ......
  • tomcat 启动报错javax.naming.NameNotFoundException: 名称[xxx.LoginFilter/xxxServi
    本地测试没问题,部署到服务器上的tomcat,启动报错javax.naming.NameNotFoundException:名称[xxx.LoginFilter/xxxService]未在此上下文中绑定可能是由于在Tomcat的配置文件中,资源名称[xxxx]没有正确配置或者引用。为了解决这个问题,你可以尝试以下步骤:1、检查你的Tomcat配置文......
  • WPF StringFormat在Label控件无效
    在WPF程序设计时,若使用Label控件绑定数据后StringFormat进行格式化显示时发现设定的StringFormat无效,但TextBlock控件中使用StringFormat显示正常,导致Label控件StringFormat失败的根本原因在于Label控件的Content属性是一个object对象,Binding.StringFormat仅作用于string类型属性......
  • 【wpf】 枚举转bool转换器
    ///<summary>///枚举转bool///</summary>publicclassEnum2BooleanConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnva......
  • WPF自定义Panel:让拖拽变得更简单
       在WPF应用程序中,拖放操作是实现用户交互的重要组成部分。通过拖放操作,用户可以轻松地将数据从一个位置移动到另一个位置,或者将控件从一个容器移动到另一个容器。然而,WPF中默认的拖放操作可能并不是那么好用。为了解决这个问题,我们可以自定义一个Panel来实现更简单的拖......
  • WPF中自定义按钮实现最大化最小化动画过度效果
    需要使用WindowsAPI[DllImport("user32.dll",EntryPoint="SetWindowLong")]privatestaticexternintSetWindowLong32(HandleRefhWnd,intnIndex,intdwNewLong);[DllImport("user32.dll",EntryPoint="SetWindowLongPtr"......
  • Dapr云原生应用开发系列6:绑定构建块
    题记:这篇介绍绑定构建块,这是一个极度简化应用程序本身代码的特性。本文在GitHubCopilot的帮助下书写。原理由于Dapr由微软Azure团队孵化,所以绑定这一概念也是来源于微软的开源Serverless项目AzureFunctions。所以我们理解Dapr的绑定构建块,可以参考AzureFunctions绑定的概念。......