zoukankan      html  css  js  c++  java
  • INotifyPropertyChanged 接口

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

    名空间:   System.ComponentModel
    程序集:  
    System(在 System.dll 中)
    语法
    public interface INotifyPropertyChanged

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

    例如,考虑一个带有名为 FirstName 属性的 Person 对象。
    若要提供一般性属性更改通知,则
    Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件。

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

    • 实现 INotifyPropertyChanged 接口(首选)。

    • 为绑定类型的每个属性提供更改事件。

    不执行上述这两个功能。

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.Common;
    using System.Diagnostics;
    using System.Drawing;
    using System.Data.SqlClient;
    using System.Windows.Forms;

    // This form demonstrates using a BindingSource to bind
    // a list to a DataGridView control. The list does not
    // raise change notifications, however the DemoCustomer type 
    // in the list does.
    public class Form1 : System.Windows.Forms.Form
    {
        
    // This button causes the value of a list element to be changed.
        private Button changeItemBtn = new Button();

        
    // This DataGridView control displays the contents of the list.
        private DataGridView customersDataGridView = new DataGridView();

        
    // This BindingSource binds the list to the DataGridView control.
        private BindingSource customersBindingSource = new BindingSource();

        
    public Form1()
        {
            
    // Set up the "Change Item" button.
            this.changeItemBtn.Text = "Change Item";
            
    this.changeItemBtn.Dock = DockStyle.Bottom;
            
    this.changeItemBtn.Click +=
                
    new EventHandler(changeItemBtn_Click);
            
    this.Controls.Add(this.changeItemBtn);

            
    // Set up the DataGridView.
            customersDataGridView.Dock = DockStyle.Top;
            
    this.Controls.Add(customersDataGridView);

            
    this.Size = new Size(800200);
            
    this.Load += new EventHandler(Form1_Load);
        }

        
    private void Form1_Load(System.Object sender, System.EventArgs e)
        {
            
    // Create and populate the list of DemoCustomer objects
            
    // which will supply data to the DataGridView.
            BindingList<DemoCustomer> customerList = new BindingList<DemoCustomer>();
            customerList.Add(DemoCustomer.CreateNewCustomer());
            customerList.Add(DemoCustomer.CreateNewCustomer());
            customerList.Add(DemoCustomer.CreateNewCustomer());

            
    // Bind the list to the BindingSource.
            this.customersBindingSource.DataSource = customerList;

            
    // Attach the BindingSource to the DataGridView.
            this.customersDataGridView.DataSource =
                
    this.customersBindingSource;
        }

        
    // Change the value of the CompanyName property for the first 
        
    // item in the list when the "Change Item" button is clicked.
        void changeItemBtn_Click(object sender, EventArgs e)
        {
            
    // Get a reference to the list from the BindingSource.
            BindingList<DemoCustomer> customerList =
                
    this.customersBindingSource.DataSource as BindingList<DemoCustomer>;

            
    // Change the value of the CompanyName property for the 
            
    // first item in the list.
            customerList[0].CustomerName = "Tailspin Toys";
            customersBindingSource.ResetItem(
    0);
        }

        [STAThread]
        
    static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(
    new Form1());
        }
    }

    // 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(
    thisnew 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");
                }
            }
        }
    }
  • 相关阅读:
    获取单选框的值
    HTML5本地存储详解
    设为首页和加入收藏
    用PhotoSwipe制作相册,手势可放大
    iOS 加载本地 HTML 文件 CSS 样式图片无效果
    PhotoSwipe简介
    Flexslider图片轮播、文字图片相结合滑动切换效果
    网页中插入视频的方法----腾讯、优酷为例
    webapp在Android中点击链接的时候会有淡蓝色的遮罩层
    C# 获取北京时间 (根据纪元时间(1970/1/1)转换为DateTime)
  • 原文地址:https://www.cnblogs.com/wpf123/p/2052892.html
Copyright © 2011-2022 走看看