Ich nehme an, dass Sie nach der Weitergabe von Werten an Kinder fragen, die Werte nicht selbst überschreiben.
Das Konzept eines WPF-Elements mit einem Kind wird von %code% eingeführt, soweit ich weiß. Dies kommt viel weiter unten in der Hierarchie zum Einsatz, als Sie wollen. Ich würde also annehmen, dass wenn Sie einfach von %code% ableiten würden, dass sich dieses Verhalten nicht manifestieren würde.
Insbesondere muss ein Kind wissen, ob es seinen Eltern fragen soll, wenn es für eine bestimmte Eigenschaft keinen Wert hat.
Interessante Frage. Ich würde gerne die vollständige Antwort auch wissen.
Nach viel Recherche und Durchwursteln des Quellcodes für %code% , hier die kurze Antwort:
Das %code% (die Eigenschaft, die das logische Elternteil einer Instanz enthüllt) ist (wie 90% der nützlichen Implementierung von %code% ) als intern markiert und somit vor allem Code außerhalb von WindowsBase.dll verborgen.
Es ist möglich, reflection zu verwenden, um das %code% -Feld zu setzen, und diese versteckten Methoden aufzurufen, um %code% zu setzen, aber am Ende des Tages ist es keine saubere Lösung.
Nachdem ich den %code% Quellcode durchforstet habe, muss ich sagen, dass ich nicht beeindruckt bin. %code% könnte und sollte eine sehr saubere, allgegenwärtige, wiederverwendbare Klasse sein. Stattdessen ist es strukturell und behaviorisch an seine Erben gebunden und enthält sogar spezifische Konstanten, Felder, Methoden und Workarounds, um Freezable bei der Koexistenz mit den anderen Unterklassen zu unterstützen, was nicht nur weit vom guten OO-Design entfernt ist, sondern auch macht auch eine ansonsten hervorragende Klasse außerhalb des WPF-Frameworks völlig unbrauchbar.
Ich habe Mühe, genügend Informationen über die Eigenschaft Vererbungsbaum (oder Inheritance Context) zu finden, die von %code% und %code% verwendet wird.
Ich möchte die Wertvererbungsfunktion von %code% außerhalb einer typischen WPF-Seite verwenden, so dass Objekt A das logische übergeordnete Objekt B ist und daher ein Wert, der einer Eigenschaft in Objekt A zugewiesen ist, automatisch an Object propagiert B, sofern es nicht lokal festgelegt wurde (ein bisschen wie die Eigenschaft %code% in WPF).
Wenn Objekt A und Objekt B von %code% entfernt werden und nicht untergeordneten Elemente von %code% sind (mit anderen Worten, Objekt A ist sein eigenes Stamm ), wie stellen Sie dann den logischen Baum her, damit %code% versteht, dass B ein Kind von A ist?
Der Hillberg Freezable Trick sowie Josh Smiths Trickkiste ist nicht ganz das, wonach ich suche. Ich möchte keine Eigenschaften aus einer vorhandenen Elementstruktur abrufen ... Ich möchte meinen eigenen, nicht sichtbaren Elementbaum erstellen ... d. H., Sie haben die Kontrolle über den Erbkontext.
Weiß jemand, wo sich dieses Wissen versteckt?