Hi,
ich habe in einer Klasse eine Eigenschaft, dessen Typ aus einer Klasse mit jeweils auch Eigenschaften, und einem Array besteht, dessen Typ wiederum einer Klasse mit Eigenschaften ist.
Wenn ich nun die Eigenschaft aus der Klasse vom Typ dess Arays ändere, funktioniert meine Ereignisüberwachung nicht(s.Unten).
Also: KLasse1-Eigenschaft->Klasse2-Eigenschaftsarray->Klasse3-Eigenschaft
Meine erste Frage: Wenn ich diese Eigenschaft nun ändere, wird dann nicht der set-Teil der ersten Eigenschaft aufgerufen??
Nun meine jetzige Ereignisüberwachung:
Klasse1 : INotifyPropertyChanged
{
Eigenschaft Typ Name
{
get
{
...
}
set
{
...
NotifyPropertyChanged("");
}
}
#region INotifyPropertyChanged Member
public event PropertyChangedEventHandler PropertyChanged;
#endregion
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
Wie kann ich, dass wenn irgendeines dieser unterereignisse geändert wird, dieses Ereignis auslösen??? 🤔
while (!sleep) sheep++;
In dem die jeweilse "obere" Klasse (also Klasse1 in deinem Bsp) das Event der Klasse(n)2 aboniert.
So richtig sauber wird das aber glaub nicht.
Wenn Klasse 3 eine Eigenschaft ändert, darf Klasse1 doch gar keine Änderung melden -
Jedenfalls nicht über INotifyPropertyChanged.
weil bei ihr ist ja keine Eigenschaft geändert worden.
Vlt. müsste man da, wo Klasse1-Änderungen verarbeitet werden, auch alle enthaltenen Klasse3-Dinger durchgehen, und deren Änderungen registrieren/deregistrieren.
Der frühe Apfel fängt den Wurm.
Habe es schon hingekriegt. Trotzdem danke für die Hilfe.
while (!sleep) sheep++;
servus Servus 😉
und wie hast du es gelöst?
ansonsten hat Sebi Recht.
eine Anmerkung am Rande:
anstatt Array von INotifyPropertyChanged solltest du nutzen
System.Collections.ObjectModel.Collection<INotifyPropertyChanged>
diese Collection hat virtuelle Methoden um das Addieren, Modifizieren und Entfernen von Elementen zu verfeinen. Hier kannst du die PropertyChanged Ereignisse für ihre elemente abonnieren/freigeben.