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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top