Domanda

Ho lo stesso identico problema tra quelli citati (preso in forma qui , ma senza risposta):

  

Aggiungo i controlli a StackPanel tramite   StackPanel.Childrens.Add ().

     

Ma quello che vedo - tutti i controlli, aggiunti   da parte mia, sono nella stessa posizione e   si sovrappongono. Non lo sono   layout all'interno di StackPanel.

     

Anche StackPanel.UpdateLayout () porta   niente di me.

Io per me sto cercando di aggiungere Canvas es (sì, ne ho bisogno) a StackPanel . Qualche idea?

È stato utile?

Soluzione

Hai impostato dimensioni esplicite sulle tue tele? Le tele non si adattano al loro contenuto, quindi a meno che tu non specifichi esplicitamente la dimensione della tela, quando le metti tutte in un pannello di pila, il loro contenuto apparirà uno sopra l'altro, come spieghi. Questo perché la posizione (0,0) rispetto alla quale sono posizionati i figli della tela sarà la parte superiore sinistra del pannello di stack (lo stesso punto per tutte le tele e tutti i loro figli).

Prova quanto segue in Kaxaml per evidenziare la situazione:

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

Vedrai che le due righe di testo sono sovrapposte l'una sull'altra.

Ora, prova questo:

<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 vedrai la spaziatura che desideri.

Spero che sia d'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top