博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView 控件和 INotifyPropertyChanged 接口
阅读量:5165 次
发布时间:2019-06-13

本文共 2727 字,大约阅读时间需要 9 分钟。

原文:

ListView 控件和 DataGridView 控件

ListView 是跟 Winform 中 DataGridView 用法以及显示效果差不多的一个 WPF 控件,可以通过列表的方式方便的显示数据;

1645312-20190419120527687-1824668418.png

DataGridView 控件的使用中,通常我们都会创建一个类用来储存数据,读取数据之后再创建一个这个类的集合,然后将集合赋给 dataGridView1.DataSource 属性;也可不用集合,直接在循环中把数据一条一条的加载 dateGridView1.Rows.Add()

// 先创建一个用来储存数据的类class UserInfo{    public string Name { get; set; }    public int Age { get; set; }}
// WinForm:DataGridView 控件// 方法一:创建一个对象集合,赋值给 DataSource 属性List
infos = new List
();for(int i = 0; i > 10; i++){ infos.Add(new UserInfo { Name = $"Light_{i}", Age = i });}dataGridView1.DataSource = infos;// 方法二:一条一条的添加数据for(int i = 0; i > 10; i++){ dateGridView1.Rows.Add(new UserInfo { Name = $"Light_{i}", Age = i });}

在 ListView 控件中 DataSource 属性在这里是 listView.ItemsSource;单条数据加载的方法是 listView.Items.Add();,整体用法还是大同小异;

// WPF:ListView 控件// 方法一:创建一个对象集合,赋值给 ItemsSource 属性List
infos = new List
();for(int i = 0; i > 10; i++){ infos.Add(new UserInfo { Name = $"Light_{i}", Age = i });}listView.ItemsSource = infos;// 方法二:一条一条的添加数据for(int i = 0; i > 10; i++){ listView.Items.Add(new UserInfo { Name = $"Light_{i}", Age = i });}

INotifyPropertyChanged 接口

命名空间:System.ComponentModel

INotifyPropertyChanged 是一个非常强大的接口,用于向对象绑定的客户端控件发出对象属性已更改的通知;

用人话说就是:正常我们向上面一样,把对象绑定到控件用来显示数据,有一个缺点:每次更改对象的属性之后,我们需要手动的重新再去绑定数据,否则数据是不会刷新显示修改后的值的;

但是如果对象实现了 INotifyPropertyChanged 接口的话,我们根本不用担心这些问题,直接修改已绑定对象的属性,客户端就会自动刷新显示数据;

比如说,上面我们创建的 UserInfo 类就可以修改成这样:

class UserInfo : System.ComponentModel.INotifyPropertyChanged{    private string name;    private int age;        // 属性发生更改时触发的事件,由每个属性的 Set 访问器调用    public event PropertyChangedEventHandler PropertyChanged;        public string Name    {        get => name;        set        {            name = value;            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));        }    }    public string Age    {        get => age;        set        {            age = value;            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Age"));        }    }}

这样创建完成后,我们再安装上面的方法将对象绑定客户端控件,之后每次修改数据,就可以直接获取绑定的对象然后修改对象属性就可以了,无需再做任何操作;

// DataGridView 控件// 获取选中行,返回当前绑定对象UserInfo info = (UserInfo)dataGridView1.SelectedRows[0].DataBoundItem;info.Name = "Liang";info.Age = 18;
// ListView 控件// 获取选中行,返回当前绑定对象UserInfo info = (UserInfo)listView.SelectedItem;info.Name = "Liang";info.Age = 18;
posted on
2019-04-20 09:49 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10739987.html

你可能感兴趣的文章
结构体字节对齐
查看>>
1239-贪心算法
查看>>
5.Advanced concepts
查看>>
android上传文件到服务器
查看>>
JavaScript学习笔记——语法基础1.1
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
20165205 学习基础与C语言基础调查
查看>>
iOS SVN终端指令
查看>>
Linux如何更新软件源
查看>>
SQL使用CASE 语句
查看>>
day8 (异常处理和网络编程)
查看>>
php中函数 vsprintf() 和 var_export()
查看>>
多线程(1)—单线程
查看>>
HTML5权威指南 16.拖放API与通知API
查看>>
NYOJ-289 苹果 又是一个典型的01背包和上题一样没啥好说的
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
listview初始化后仍为空
查看>>
无刷新分页
查看>>