Frage

Ich kämpfe genügend Informationen über die Immobilie Vererbungsbaum (oder inheritence Context) von DependencyObject und DependencyProperty verwendet zu finden.

Ich möchte den Wert inheritence Fähigkeit DependencyProperty verwenden außerhalb einer typischen WPF-Seite, so dass Objekt A ist die logische übergeordnete Objekt B und damit ein Wert einer Eigenschaft auf Objekt A zugewiesen wird automatisch propagieren B Objekt, es sei denn es wurde lokal eingestellt (ein bisschen wie die FlowDirection Eigenschaft funktioniert in WPF).

Wenn Objekt A und Objekt B aus DependencyObject derieved und nicht Kindern eines UIElement (mit anderen Worten, Objekt A ist es selbst ist root ), dann, wie beurteilen Sie die logische Struktur aufzubauen, so dass DependencyProperty versteht, dass B ein Kind von A?

Die Hillberg Freezable Trick als und Josh Smith Tasche von Tricks ist nicht ganz das, was ich suche zum. I nicht Eigenschaften aus einem vorhandenen Elemente Baum abrufen möge ... Ich mag meinen eigenen, nicht-visuelles Element Baum schaffen ... das hieß habe die Kontrolle über den inheritence Kontext.

Wer weiß, wo dieser Körper von Wissen versteckt?

War es hilfreich?

Lösung

Nach viel Forschung und Durchwurstelns den Quellcode für DependencyObject, hier ist die kurze Antwort:

Die InheritenceContext (die Eigenschaft, die das logische übergeordnete einer Instanz zeigt) ist (wie 90% der nutzbaren Umsetzung DependencyObject) als internes markiert und somit von allen Code außerhalb von WindowsBase.dll versteckt gehalten

Es ist möglich, Reflexion zu verwenden, um das _contextParent Feld zu setzen sowie diese versteckte Methoden aufrufen, die InheritenceContext zu setzen, aber am Ende des Tages ist es nicht eine saubere Lösung.

Nach dem DependencyObject Quellcode Scheuern, habe ich muss sagen, dass ich nicht beeindruckt bin. DependencyObject könnte und sollte eine sehr saubere, allgegenwärtig, wiederverwendbare Klasse gewesen. Stattdessen ist es strukturell und behaviourly zu seinen Nachfolgern gebunden und sogar enthält spezifische Konstanten, Felder, Methoden und Umgehungen Freezable koexistieren mit dem Rest der Unterklassen zu helfen, die nicht nur weit von gut OO-Design verirrt, aber auch sonst Pracht Klasse macht außerhalb des WPF Rahmen völlig unbrauchbar.

Andere Tipps

Ich gehe davon aus, dass Sie über die Ausbreitung von Werten für Kinder sind gefragt, die sich nicht überschreiben Werte.

Das Konzept eines WPF-Element ein Kind durch ContentControl eingeführt, soweit ich weiß. Dies kommt ins Spiel, viel weiter unten in der Hierarchie, als Sie gehen mögen. Also, ich würde davon ausgehen, dass, wenn Sie waren einfach zu von DependencyObject ableiten, dass dieses Verhalten würde nicht manifestieren.

Insbesondere muss ein Kind wissen, seine Eltern zu fragen, ob es nicht einen Wert für eine bestimmte Eigenschaft hat.

Interessante Frage. Ich möchte auch die vollständige Antwort kennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top