私はイベントベースのプログラミングに精通していません。基本的に、私はまだそれでつまずいています。何かを設定しようとしていますが、チュートリアルを使用しても、頭を包むことができません。私が(言葉で)やりたいことは次のとおりです。
プロパティが変更されるデータオブジェクトがあります。プロパティのセッターでこれに気づき、プロパティが変更されたというイベントを発生させたいと思います。
他の場所(まったく別のクラス)で、このオブジェクトのプロパティが変更されたことを知り、何らかのアクションを実行したいと思います。
今、これは十分に一般的なシナリオであると確信していますが、私の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はどこに割り当てられますか?
- 割り当てはどのように見えますか?