Ich habe meine MVVM und das Modell besteht aus einer Reihe von verwandten Klassen, aber für diese Frage konzentrieren wir uns auf nur vier.DependencyProperty Analog für WPF MVVM Modell
GrandParentModel, ParentModel, ChildModel und Contact.
Diese Typen erben alle von ModelBase, auf dem eine Implementierung von INotifyPropertyChanged ausgeführt wird.
So hat jedes der drei Modelle eine Kontakteigenschaft. Wenn Child keine Eigenschaft hat, sollte es nach Parent suchen, und wenn Parent leer ist, wird es nach GrandParent aussehen. Wenn sich der Kontakt auf der Großelternebene ändert, möchte ich, dass alle abhängigen Personen, dh alle Untereltern und ihre Kinder, ein PropertyChanged-Ereignis für ihren Kontakt auslösen.
Ich denke, alles, was ich tun werde, wird durch das DependencyProperty-System unterstützt, aber ich möchte das nicht verwenden, da dies mein Modell, Trennung von Bedenken und all das ist. Also stelle ich eine Mini-Implementierung zusammen, die alles in Ordnung ist.
Meine Frage ist, ist jemand diesen Weg schon einmal gegangen und gibt es irgendetwas, worüber ich mir in der Zukunft Sorgen machen sollte? Meine Spidey-Senses kribbeln und ich weiß nicht warum.
Dank Ian
Edit: Die Beziehung zwischen den hier Objekte ist, dass ein Großelternteil eine beliebige Anzahl von Eltern hat eine beliebige Anzahl von Kindern hat. Mein aktuelles Modell hat auf jedem eine Eigenschaft, die auf das Elternelement zeigt (bei Großeltern null), und ein Eltern-/Großelternteil hat eine Sammlung von Kindobjekten.
Könnten Sie bitte ein Beispiel für die Klassenhierarchie/Beziehungen hinzufügen? (vorzugsweise mit Pseudocode) Sind sie "ist ein" oder "hat ein" Beziehungen? Komplexe Eigenschaften oder Sammlungen? usw. –
In diesem Fall enthält meine ModelBase eine Elterneigenschaft, die bei der Erstellung auf das Elternobjekt gesetzt wird. Ich werde eine vollständige Lösung veröffentlichen, wenn ich die Codelänge auf etwas reduzieren kann, das hier passt. Ich habe oben ein kleines Edit hinzugefügt, die Struktur ist nicht in Stein, um ehrlich zu sein. – Ian