看书,以前看过委托和事件,有部分理解,但是又忘了。还是请教下大家吧。using System.ComponentModel;
namespace DataBinding_Address
{
public class Address : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name = "";
public string Name
{
get { return _name; }
set {
_name = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
}
}
}
}问题一:“INotifyPropertyChanged”这个接口都有那些方法呢?给“PropertyChangedEventHandler”委托定义了“PropertyChanged”事件,调用事件“PropertyChanged(this, new PropertyChangedEventArgs("Name"));”。
问题二:“PropertyChangedEventHandler”委托从哪里来的?
“PropertyChanged(this, new PropertyChangedEventArgs("Name"));”中,“this”代表事件的发送者,也就是这个类。
问题三:“new PropertyChangedEventArgs("Name")”指什么呢?
namespace DataBinding_Address
{
public class Address : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name = "";
public string Name
{
get { return _name; }
set {
_name = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
}
}
}
}问题一:“INotifyPropertyChanged”这个接口都有那些方法呢?给“PropertyChangedEventHandler”委托定义了“PropertyChanged”事件,调用事件“PropertyChanged(this, new PropertyChangedEventArgs("Name"));”。
问题二:“PropertyChangedEventHandler”委托从哪里来的?
“PropertyChanged(this, new PropertyChangedEventArgs("Name"));”中,“this”代表事件的发送者,也就是这个类。
问题三:“new PropertyChangedEventArgs("Name")”指什么呢?
你想知道“INotifyPropertyChanged”有哪些方法要实现,最简单的方法是右键点击“INotifyPropertyChanged”,然后选择“转到定义(G)”菜单,你将看到这个接口的完整定义。
对于其它类的接口也是一样,这是一个非常实用的菜单,请记住!关于 问题二
给“PropertyChangedEventHandler”委托定义了“PropertyChanged”事件
事件本质其实也是委托,只是换了个马甲而已。
PropertyChangedEventHandler委托是调用这个类(Address)的用户(专业说法是这个类的客户)提供的,如果调用者关心这个方法的话。关于 问题三
这是调用构造方法,实现化一个PropertyChangedEventArgs对象。请记住“转到定义(G)”这个菜单!
例如,考虑一个带有名为 FirstName 属性的 Person 对象。若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件。
若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:
实现 INotifyPropertyChanged 接口(首选)。
为绑定类型的每个属性提供更改事件。
对于你提问的东西 我建议你如果不懂 先转到定义 看看定义是怎么解释的 如果还是不懂 那就不懂的地方(单词)+msdn 搜一下
// Notifies clients that a property value has changed.
public interface INotifyPropertyChanged
{
// Summary:
// Occurs when a property value changes.
event PropertyChangedEventHandler PropertyChanged;
}// Summary:
// Represents the method that will handle the System.ComponentModel.INotifyPropertyChanged.PropertyChanged
// event.
//
// Parameters:
// sender:
// The source of the event.
//
// e:
// A System.ComponentModel.PropertyChangedEventArgs that contains the event
// data.
public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);