AdornerDecorator - was ist wichtig, wo sie platziert sind?

7

Mit etwas Xaml wie folgt:

%Vor%

Das WPF-Snoop-Dienstprogramm zeigt an, dass textBox1 ein Kind von AdornerDecorator ist (wie zu erwarten ist), aber auch, dass der AdornerLayer, den AdornerDecorator erstellt, ebenfalls ein Kind ist. Da ein benutzerdefinierter Adorner, der zum AdornerLayer hinzugefügt wurde, außerhalb des Textrahmens angezeigt werden kann, muss sich die Zeichenfläche des AdornerLayers auch außerhalb erstrecken (vermutlich über das gesamte Fenster hinweg).

Welche Bedeutung hat also die Platzierung von AdornerDecorator (wenn wir ein UI-Element an den benutzerdefinierten Adorner binden, den wir in der AdornerLayer platzieren)? Ich weiß, dass AdornerLayer.GetAdorner (textBox1) die erste Adorner-Ebene in der visuellen Struktur von textbox1 abruft, aber was ist es, wo das ist (wenn der benutzerdefinierte ardorner der Ebene hinzugefügt wird und der benutzerdefinierte ardoner weiß, an welches Element er gebunden ist zu)?

    
sturdytree 13.03.2012, 21:28
quelle

1 Antwort

20

Die kurze Antwort ist, dass es wichtig ist, wenn Sie anfangen, mit Steuerelementen zu arbeiten, die andere Steuerelemente (in der Z-Index-Ebene) überlappen, und Sie kümmern sich darum, ob eine bestimmte Adorner-Ebene über den überlappenden Steuerelementen angezeigt wird. Wenn Sie beispielsweise ein ErrorTemplate verwenden, wird dessen Inhalt angezeigt In einer Adorner-Ebene gerendert und wenn Sie in Ihrer App kein <AdornerDecorator> angeben (was bedeutet, dass Sie nur das von den meisten Window-Vorlagen bereitgestellte verwenden), können Sie mit this passiert.

Indem wir die <AdornerDecorator> wo wir wollen platzieren, können wir steuern, wie sich diese Überlappung verhält.

    
Jason Frank 21.12.2012, 19:23
quelle

Tags und Links