2009-11-26 14 views
5

Tengo algunos controles agregados programáticamente en un stackpanel. Lo que quiero hacer es que quiero que uno de los controles en este panel de distribución se coloque sobre otro control. Específicamente, quiero colocar el botón sobre una imagen en este panel de pila. No pude encontrar la propiedad zindex en C# codebehind. Aunque parece un problema muy simple, no puedo encontrar ninguna pista para resolver este problema. ¿Alguien por favor ......?¿cómo podemos cambiar el zindex de un control Silverlight programáticamente?

Respuesta

7

Intenta colocar todos tus controles en el lienzo. Entonces se puede establecer con ZIndex:

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

Sólo el panel Canvas soporta una propiedad ZIndex. Stackpanel no lo hace porque cada elemento se coloca uno después del otro en el panel para que no se superpongan entre sí. Esto puede ser un poco molesto a veces cuando tienes transformaciones animadas moviendo los elementos porque la suposición anterior no es verdadera.

En general, aunque si necesita colocar elementos en una pila visual, el Stackpanel no es el lugar adecuado para ello. Quizás un Canvas o podría usar un Grid donde la posición oridinal de un elemento determina su "zorder" en una celda.

+4

Incluso con los elementos en una cuadrícula, puede utilizar .SetValue (Canvas.ZIndexProperty, myValue); y funcionará en tiempo de ejecución. – Jeb

2

De xaml:

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