INotifyPropertyChanged 接口
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                INotifyPropertyChanged 接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                向客戶端發出某一屬性值已更改的通知。
命名空間:System.ComponentModel程序集:??
System(在 System.dll 中)
語法public interface INotifyPropertyChanged
public interface class 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(800,?200);
????????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(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");
????????????}
????????}
????}
}
?
轉載于:https://www.cnblogs.com/zhangtao/archive/2011/04/09/2010509.html
總結
以上是生活随笔為你收集整理的INotifyPropertyChanged 接口的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 如何安装Windows操作系统?(二)安
- 下一篇: 50句看后可以变换心情豁然开朗的话
