MVVM设计模式基础知识--INotifyPropertyChanged接口

在.NET平台上,数据绑定是一项令人十分愉快的技术。利用数据绑定能减少代码,简化控制逻辑。

通常,可以将某个对象的一个属性绑定到一个可视化的控件上,当属性值改变时,控件上的显示数据也随之发生变化。要实现这一功能,只需要为自定义对象实现 INotifyPropertyChanged 接口即可。此接口中定义了 PropertyChanged 事件,我们只需在属性值改变时触发该事件即可.

INotifyPropertyChanged 接口是 WPF/Silverlight 开发中非常重要的接口, 它构成了 ViewModel 的基础.

INotifyPropertyChanged接口:

向客户端发出某一属性值已改变的通知

命名空间:System.ComponentModel

程序集:System(在System.dll中)

语法:public interface INotifyPropertyChanged

INotifyPropertyChanged成员:

INotifyPropertyChanged.PropertyChanged事件

在更改属性时发生

语法:event PropertyChangedEventHandler PropertyChanged

INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。

若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:

*实现 INotifyPropertyChanged 接口(首选)

*MVVM设计模式基础知识–INotifyPropertyChanged接口

下面的代码示例演示如何实现 INotifyPropertyChanged 接口的 PropertyChanged 事件。

// This is a simple customer class that 

  // implements the IPropertyChange interface.

  public class DemoCustomer  : INotifyPropertyChanged
  {
      // These fields hold the values for the public properties.

      private Guid idValue = Guid.NewGuid();
      private string customerNameValue = String.Empty;
      private string phoneNumberValue = String.Empty;

      public event PropertyChangedEventHandler PropertyChanged;

      private void NotifyPropertyChanged(String info)
      {
          if (PropertyChanged != null)
          {
              PropertyChanged(this, new PropertyChangedEventArgs(info));
          }
      }

      // The constructor is private to enforce the factory pattern.

      private DemoCustomer()
      {
          customerNameValue = "Customer";
          phoneNumberValue = "(555)555-5555";
      }

      // This is the public factory method.

      public static DemoCustomer CreateNewCustomer()
      {
          return new DemoCustomer();
      }

      // This property represents an ID, suitable

      // for use as a primary key in a database.

      public Guid ID
      {
          get
          {
              return this.idValue;
          }
      }

      public string CustomerName
      {
          get
          {
              return this.customerNameValue;
          }

          set
          {
              if (value != this.customerNameValue)
              {
                  this.customerNameValue = value;
                  NotifyPropertyChanged("CustomerName");
              }
          }
      }

      public string PhoneNumber
      {
          get
          {
              return this.phoneNumberValue;
          }

          set
          {
              if (value != this.phoneNumberValue)
              {
                  this.phoneNumberValue = value;
                  NotifyPropertyChanged("PhoneNumber");
              }
          }
      }
  }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-16 16:11:41

MVVM设计模式基础知识--INotifyPropertyChanged接口的相关文章

MVVM设计模式基础知识--ICommand接口

命令是 Windows Presentation Foundation (WPF) 中的输入机制,它提供的输入处理比设备输入具有更高的语义级别. 命令有若干用途: 第一个用途是将语义以及调用命令的对象与运行命令的逻辑分离开来.这使得多个全然不同的源能够调用同样的命令逻辑.并使得能够针对不同的目标对命令逻辑进行自己定义. 比如,在很多应用程序中都能找到的编辑操作 "复制". "剪切"和 "粘贴"都可使用不同的用户操作进行调用(假设这些操作是使用命令

(001)springboot中测试的基础知识以及接口和Controller的测试

(一)springboot中测试的基础知识 (1)添加starter-test依赖,范围指定为test,只在执行测试时生效 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 完整po

设计模式基础知识

总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的

基础知识系列?接口的显示实现和隐式实现

x CLR via C#中的一个小结将标题定为:"13.5 隐式和显式接口方法实现(幕后发生的事情)"... 直接上代码 public interface I { int GetIntFun(); int GetIntFunVirtual(); string GetStrFun(); } public class 我是一个类名字叫雷雷 : I { /// <summary> /// 隐式实现-派生类不可以重写 /// 0.必须标记为public,否则报错:{"我是

系统架构之设计模式一、基础知识

从今天开始将常用到的设计模式整理.归档,首先介绍下设计模式基础知识. 一.设计模式分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式六大原则 1.开闭原则(Open Close Principle) 开

20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. internal: 只能在当前项目中访问,在同一个项目中,internal和public的权限是一样的. protected internal: protected + internal权限. 1.1:能够修饰类的访问修饰符只有两个: public / internal 1.2:接口中的成员不允许

[设计模式整理笔记 一] 基础知识

[设计模式整理笔记 一] 基础知识 [导读] [设计模式整理笔记 一] 基础知识 [设计模式整理笔记 二] 简单工厂模式(Simple Factory) [设计模式整理笔记 三] 工厂模式(Factory) [设计模式整理笔记 四] 抽象工厂模式(Abstract Factory) [设计模式整理笔记 五] 创建者模式(Builder) [设计模式整理笔记 六] 工厂模式与创建者模式总结 [设计模式整理笔记 七] 原型模式(ProtoType) [设计模式整理笔记 八] 单例模式(Singlet

Java 接口基础知识

一.Java接口基础知识 1, Java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承. 2, 与Java接口相关的设计模式: 1, 定制服务模式 设计精粒度的接口,每个Java接口代表相关的一组服务,通过继承来创建复合接口 2, 适配器模式 当每个系统之间接口不匹配时,用适配器来转换接口 3, 默认适配器模式 为接口提供简单的默认实现 4, 代理模式 为Java接口的实现类创建代理类,使用者通过代理来获得实现类的服务 5, 标识类型模

《大话设计模式》笔记-基础知识2:面向对象基础知识

本书作者介绍每一种设计模式就是用类图(用的UML类图,其基础知识另文介绍)+面向对象语言小程序+人物对话解释知识点.本文就是介绍<大话设计模式>中所用到面向对象的基础知识(基于C#语言),方便阅读本书代码. 类与实例 (1)对象 一切事物皆为对象,对象就是看到.感觉到.听到.摸到等实实在在的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,就是针对对象来进行编程的. (2)类 类就是具有相同的属性和功能的对象的抽象的集合.例子如下 "class&q