2009-11-26 8 views
5

Ich habe einige Steuerelemente in einem Stackpanel programmgesteuert hinzugefügt. Ich möchte, dass eines der Steuerelemente in diesem Stackpanel über ein anderes Steuerelement platziert wird. Insbesondere möchte ich einen Button über ein Bild in diesem Stack Panel platzieren. Ich konnte keine Zindex-Eigenschaft in C# codebehind finden. Obwohl es ein sehr einfaches Problem scheint, kann ich keinen Hinweis finden, um dieses Problem zu lösen. Wer bitte ......?Wie können wir Zindex einer Silverlight-Steuerung programmgesteuert ändern?

Antwort

7

Versuchen Sie, alle Steuerelemente auf Canvas zu platzieren. Dann können Sie ZIndex Set mit:

this.controlName.SetValue(Canvas.ZIndexProperty, 10d); 
3

Nur die Canvas Panel unterstützt eine ZIndex Eigenschaft. Stackpanel funktioniert nicht, weil jedes Element nacheinander im Panel platziert wird, so dass sie sich nicht überlappen sollten. Das kann manchmal etwas nervig sein, wenn Sie animierte Transformationen haben, die die Objekte bewegen, weil die vorherige Annahme nicht wirklich wahr ist.

Im Allgemeinen, wenn Sie Elemente in einem visuellen Stapel platzieren müssen, ist das Stackpanel nicht der richtige Ort dafür. Vielleicht eine Canvas oder Sie könnten eine Grid verwenden, wo die ursprüngliche Position eines Elements seine "Zorder" in einer Zelle bestimmt.

+4

Auch mit Elementen in einem Raster, können Sie .SetValue (Canvas.ZIndexProperty, myValue); und es wird zur Laufzeit funktionieren. – Jeb

2

Von XAML:

<StackPanel Canvas.ZIndex="1"> 
</StackPanel>