Question

J'ai exactement le même problème que cité (sous la forme ici , mais aucune réponse):

  

J'ajoute des contrôles à StackPanel via   StackPanel.Childrens.Add ().

     

Mais ce que je vois - tous les contrôles, a ajouté   par moi, sont dans la même position et   se chevauchent. Ils ne sont pas   mise en page à l'intérieur de StackPanel.

     

Même StackPanel.UpdateLayout () apporte   moi rien.

Pour ma part, j'essaie d'ajouter des Canvas (oui, j'en ai besoin) au StackPanel . Des idées?

Était-ce utile?

La solution

Avez-vous défini des tailles explicites sur vos toiles? Les toiles ne se dimensionnent pas pour s'adapter à leur contenu. Ainsi, à moins que vous ne spécifiiez explicitement la taille du canevas, lorsque vous les mettez toutes dans un panneau de pile, leur contenu apparaîtra les unes sur les autres, comme vous l'avez expliqué. En effet, la position (0,0) par rapport à laquelle les enfants de la toile sont placés par rapport à sera le coin supérieur gauche du stackpanel (le même point pour toutes les toiles et tous leurs enfants).

Essayez ce qui suit dans Kaxaml pour mettre en évidence la situation:

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

Vous verrez que les deux lignes de texte se superposent.

Maintenant, essayez ceci:

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

Et vous verrez l'espacement que vous désirez.

L’espoir que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top