Pergunta

Eu tenho o mesmo problema exato como citado (forma assumida aqui , mas não respondeu):

Eu adicionar controles ao StackPanel via StackPanel.Childrens.Add ().

Mas o que eu vejo - todos os controles, acrescentou por mim, estão na mesma posição e sobrepõem uns aos outros. Eles não sendo dentro de layout de StackPanel.

Mesmo StackPanel.UpdateLayout () traz me nada.

Eu por mim estou tentando adicionar Canvases (sim eu precisar deles) ao StackPanel. Alguma idéia?

Foi útil?

Solução

Você definir tamanhos explícitos em suas telas? Telas não fazer o tamanho para caber seu conteúdo, a menos que você especifique o tamanho da tela explicitamente, quando você colocá-los todos em um painel de pilha, seu conteúdo será exibido em cima uns dos outros, como você explicar. Isso ocorre porque a (0,0) posição para a qual as crianças de lona estão posicionados em relação à será o canto superior esquerdo do StackPanel (o mesmo ponto para todas as telas e todos os seus filhos).

Tente o seguinte na Kaxaml para destacar a situação:

<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>

Você verá as duas linhas de texto são sobrepostas em cima da outra.

Agora, tente o seguinte:

<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>

E você verá o espaçamento que você deseja.

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top