属性更改通知(INotifyPropertyChanged)——针对ObservableCollection

问题

在开发webform中,wpf中的ObservableCollection<T>,MSDN中说,在添加项,移除项时此集合通知控件,我们知道对一个集合的操作是CURD
但是恰恰没有Update的时候提供集合通知,也就是说当我Update的时候,虽然"集合内容“已被修改,但是"控件“却没有实现同步更新
INotifyPropertyChanged提供了解决方案。

方案1:INotifyPropertyChanged

传统方式,实现接口INotifyPropertyChanged

public class StudentByINotifyPropertyChanged: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    //实现INotifyPropertyChanged接口
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    private string sex;
    private string name;

    public string Sex
    {
        get { return sex; }
        set
        {
            sex = value;
            NotifyPropertyChanged("Sex");
        }
    }

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            NotifyPropertyChanged("Name");
        }
    }
}

示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/PropertyChanged

方案2:采用框架实现好的

mvvmlight的ViewModelBase已实现该方法,使用如下

List与ObservableCollection对比

List可检查更改,不能检查增加、删除
ObservableCollection检查增加、删除,不能检查更改

原文地址:https://www.cnblogs.com/Lulus/p/8158367.html

时间: 2024-10-15 20:06:58

属性更改通知(INotifyPropertyChanged)——针对ObservableCollection的相关文章

玩转INotifyPropertyChanged和ObservableCollection

本文的代码都是基于WPF的,对于Silverlight,这些技术也同样适用. (一)INotifyPropertyChanged的使用场合 先写一个最简单的数据绑定,每次点击Button后,TextBlock的值都会自增1. 效果图如下所示: 这里使用了MVVM模式,并把Click事件抽象为了Command. 代码下载:WpfApplication4_1.zip 观察上面的代码,注意到几个细节: 1. UserName和Age属性作为ViewModel的两个属性,因为Age递增是基于绑定实现的,

文件及文件夹更改通知/监测软件TheFolderSpy

TheFolderSpy是Windows环境下一个监测文件(夹)更改,删除,创建,重命名的绿色免安装小软件,并在文件及文件夹有更改时发送Email通知管理者 该软件使用.Net开发,所以需要安装.Net FrameWork环境,有图有真相 1.监控的文件(夹)列表 2.编辑或添加文件(夹),监控更改,删除,创建,重命名等操作,并发送Email通知 3.自定义发送Email通知,当文件(夹)有更改时会发送email 文件(夹)日志列表 softpedia.com上的说明: An efficient

MVVM开发模式简单实例MVVM Demo

本文主要是翻译Rachel Lim的一篇有关MVVM模式介绍的博文 A Simple MVVM Example 并具体给出了一个简单的Demo(原文是以WPF开发的,对于我自己添加的一部分会用红色标注) 现在开始: 在我看来,如果你使用的是WPF或Sliverlight来开发程序就应该使用MVVM设计模式.它是你的代码清晰明了并易于维护. 可问题是网上有很多有关MVVM模式的资源都有自己强大的实现方式.这里我将介绍最基础的MVVM设计模式的实现方法. MVVM  (是Model-View-Vie

INotifyPropertyChanged 接口

2016-07-24 INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象.若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件. 若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPr

【.NET深呼吸】INotifyPropertyChanged接口的真故事

无论是在流氓腾的问问社区,还是在黑度贴吧,或是“厕所等你”论坛上,曾经看到过不少朋友讨论INotifyPropertyChanged接口.不少朋友认为该接口是为双向绑定而使用的,那么,真实的情况是这样的吗? INotifyPropertyChanged接口位于System.ComponentModel命名空间,在该命名空间下还有另一个接口:INotifyPropertyChanging.INotifyPropertyChanging接口定义了PropertyChanging事件,应该在在属性值正

INotifyPropertyChanged接口的PropertyChanged 事件

INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象. 若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName更改时引发 PropertyChanged 事件. 若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPropertyChange

WINFORM UserControl属性的特性

自定义控件非常灵活,我通过字段{get:set:}对控件的图片进行更换.但由于是相对路径,因此在IDE编辑过程中,拖动控件进入时会出现图片无法访问的错误.原因在于拖动控件时,所有的public字段都将自动赋初始值(bool,enum). 为了解决这个问题,我在寻找如何防止在IDE中拖入控件时自动对某些字段赋值. 最后找到了UserControl特性中的ReadOnly特性: [ReadOnly(true)] public bool IsSelected{get:set:} CNBLOG PS:发

Dynamic - ExpandoObject学习心得

1.  今天下午在做开发过程中,遇到了一个问题,要往Xml文件中添加新的节点,做个xml开发的都知道该怎么做,这不是什么难事,我卡卡卡卡把这个问题解决了,但是新问题又来了,要对xml中对应的节点数据添加属性更改通知功能???我一听到这个需求就蒙了,我上哪去给xml节点数据整TMD属性更改通知啊.哎.....没办法了,胳膊拧不过大腿啊,只能硬着头皮上咯. 2.  通过google.bing.百度的搜索,主要让我发现了有个神奇的玩意,那就是ExpandoObject类型,ExpandoObject归

uwp开发:MVVM模式和数据绑定结合使用实战示例

——我的<简影uwp>开发了一段时间了,现在各个板块和基本功能已经完工,剩下的就是细节方面的处理和UI排版设计了.开发期间遇到过很多问题,由于是个人独立开发.所以好多问题需要自己想好长时间,或者去网上寻找大神求助,有时候晚上做梦都是满脑子的代码.好的是大部分最终都解决了!真的非常感谢那些帮助我的大神们,和他们交流,我学到了很多... 好了,闲话不多说,前几天,我处理的是集合数据绑定的问题,也就是说返回的是一个集合数据,用MVVM模式来说,让ViewModel层实现ObservableColle