Я не хорошо разбираюсь в программировании на основе событий. В принципе, я все еще спотыкаюсь с этим. Я пытаюсь получить что-то настроенное, но даже с учебниками я не могу обернуть вокруг себя. То, что я хотел бы сделать (на словах), следующее:
-
У меня есть объект данных, где свойство изменяется. Я замечаю это в настройщике свойства и хочу поднять событие, которое изменило свойство.
-
В другом месте (в другом классе полностью), я хочу знать, что свойство на этом объекте изменилось и предпринять некоторые действия.
Теперь я уверен, что это довольно распространенный сценарий, но мой 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?
- Как выглядит присваивание?