diese Frage wird meinen Mangel an Verständnis für das erwartete Verhalten zeigen, wenn die Umsetzung/mit INotifyPropertyChanged:Beim Verschachteln von Eigenschaften, die INotifyPropertyChanged implementieren, muss sich das übergeordnete Objekt anpassen.
Die Frage ist - für die Bindung wie erwartet funktionieren, wenn Sie eine Klasse, die sich INotifyPropertyChanged implementiert, die verschachtelt hat Von Eigenschaften des Typs INotifyPropertyChanged wird erwartet, dass Sie die Änderungsbenachrichtigung für diese Eigenschaften intern abonnieren und dann die Benachrichtigungen weitergeben? Oder erwartet man von der verbindlichen Infrastruktur, dass die Smart-Software dies überflüssig macht?
Zum Beispiel (Code beachten Sie ist nicht vollständig - nur die Frage zu illustrieren gemeint):
public class Address : INotifyPropertyChanged
{
string m_street
string m_city;
public string Street
{
get { return m_street; }
set
{
m_street = value;
NotifyPropertyChanged(new PropertyChangedEventArgs("Street"));
}
}
public string City
{
get { return m_city; }
set
{
m_city = value;
NotifyPropertyChanged(new PropertyChangedEventArgs("City"));
}
}
public class Person : INotifyPropertyChanged
{
Address m_address;
public Address
{
get { return m_address = value; }
set
{
m_address = value;
NotifyPropertyChanged(new PropertyChangedEventArgs("Address"));
}
}
}
Also, in diesem Beispiel hat wir ein verschachteltes Adressobjekt in einem Person-Objekt haben. Beide implementieren INotifyPropertyChanged, so dass die Änderung ihrer Eigenschaften zur Übertragung von Benachrichtigungen über die Änderung von Eigenschaften an Abonnenten führt.
Aber sagen wir mal mit Bindung jemand abonniert Änderungsbenachrichtigung für ein Person-Objekt und "lauscht" nach Änderungen an der Address-Eigenschaft. Sie erhalten Benachrichtigungen, wenn sich die Address-Eigenschaft selbst ändert (ein anderes Address-Objekt wird zugewiesen), erhalten jedoch KEINE Benachrichtigungen, wenn die vom verschachtelten Adressobjekt (Stadt oder Straße) enthaltenen Daten geändert werden.
Dies führt zu der Frage - ist die bindende Infrastruktur erwartet, damit umzugehen, oder sollte ich innerhalb meiner Implementierung von Person abonnieren Benachrichtigungen über das Adressobjekt und dann propagieren sie als Änderungen an "Adresse" abonnieren?
Wenn Sie an diesen Punkt kommen, danke, dass Sie sich die Zeit genommen haben, diese langatmige Frage zu lesen?
Kommentar sehr geschätzt!
Phil
Ich habe diese Frage nach dem googlen gefunden. Für mich sieht es so aus, als müssten Sie das PropertyChanged-Ereignis von Children manuell abonnieren und es in WPF-Bindungen arbeiten lassen. – loraderon
loraderon, ich bin mir ziemlich sicher, dass das nicht der Fall ist - zumindest in meinen Tests hat sich gezeigt, dass dies der Fall ist. Und es gibt keine Information (die ich gefunden habe), um etwas anderes zu sagen. Haben Sie irgendwelche Links zu Informationen, die Sie zu diesem Thema bereitstellen können? Vielen Dank. Phil – Phil
Ich habe auch keine Links. In meinem aktuellen Projekt musste ich das PropertyChanged Event blasen, damit es funktioniert. Ich bin ein Neuling bei WPF und MVVM, also könnte es bei meinem Projekt etwas Besonderes sein. – loraderon