Problema al agregar lonas a un panel de apilamiento en el código en wpf
-
05-07-2019 - |
Pregunta
Tengo exactamente el mismo problema que el citado (tomado de aquí , pero no contestó):
Añado controles al StackPanel a través de StackPanel.Childrens.Add ().
Pero lo que veo - todos los controles, agregado Por mi parte, están en la misma posición y se superponen entre sí. No estan siendo diseño dentro de StackPanel.
Incluso StackPanel.UpdateLayout () trae yo nada.
En mi caso, estoy intentando agregar Canvas
(sí, los necesito) al StackPanel
.
¿Alguna idea?
Solución
¿Ha establecido tamaños explícitos en sus lienzos? Los lienzos no se ajustan para ajustarse a su contenido, por lo que, a menos que especifique el tamaño del lienzo explícitamente, cuando los coloque en un panel de apilamiento, sus contenidos aparecerán uno encima del otro, como usted explica. Esto se debe a que la posición (0,0) a la que se colocan los lienzos del lienzo será la parte superior izquierda del panel de la pila (el mismo punto para todos los lienzos y todos sus hijos).
Pruebe lo siguiente en Kaxaml para resaltar la situación:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<Canvas>
<TextBlock Text="Child of canvas one" />
</Canvas>
<Canvas>
<TextBlock Text="Child of canvas two" />
</Canvas>
</StackPanel>
</Page>
Verás que las dos líneas de texto están superpuestas una encima de otra.
Ahora, intente esto:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<Canvas Height="15">
<TextBlock Text="Child of canvas one" />
</Canvas>
<Canvas Height="15">
<TextBlock Text="Child of canvas two" />
</Canvas>
</StackPanel>
</Page>
Y verás el espacio que deseas.
Espero que ayude.