我不精通基于事件的编程。基本上,我仍然在纠结。我正在尝试设置一些东西,但即使有教程,我也无法理解它。我想做的(用文字)如下:
我有一个属性更改的数据对象。我在属性的设置器中注意到了这一点,并想引发属性已更改的事件。
在其他地方(完全在不同的类中),我想知道这个对象的属性已经改变,并采取一些行动。
现在我确信这是一个足够常见的场景,但我的 google-fu 让我失望了。我只是不理解http://msdn.microsoft.com/en-us/library/ms743695.aspx。
我有这个:
public class ChattyClass {
private int someMember;
public event PropertyChangedEventHandler PropertyChanged;
public int SomeMember {
get {
return this.someMember;
}
set {
if (this.someMember != value){
someMember = value;
// Raise event/fire handlers. But how?
}
}
}
public class NosyClass{
private List<ChattyClass> myChatters;
public void addChatter(ChattyClass chatter){
myChatters.add(chatter);
// Start listening to property changed events
}
private void listner(){
// I want this to be called when the PropertyChangedEvent is called
Console.WriteLine("Hey! Hey! Listen! A property of a chatter in my list has changed!");
}
}
我该怎么做才能把它连接起来?
关于将我指向链接的评论:
在我看到的例子中:
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
我不明白的是:
- 为什么这不只是打电话
PropertyChanged(this, new PropertyCHangedEventArgs(name))
- PropertyChanged 在哪里分配?
- 任务是什么样的?