2009-07-30 5 views
1

J'ai exactement le même problème cité (pris forme here, mais pas de réponse):problème en ajoutant à un StackPanel toiles en code WPF

ajouter des contrôles à la StackPanel via StackPanel.Childrens.Add().

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

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

Je me suis en train d'ajouter Canvas es (oui j'ai besoin) au StackPanel. Des idées?

+0

Ajoutez-vous Canvasses ou UserControls? Avez-vous (double) vérifié que les informations Position/Taille ne sont pas définies? Peut-être que vous devriez faire un petit code. –

Répondre

7

Avez-vous défini des tailles explicites sur vos toiles? Les canevas ne sont pas dimensionnés pour s'adapter à leur contenu, donc à moins que vous ne spécifiez explicitement la taille de la toile, lorsque vous les placez tous dans un panneau de pile, leur contenu apparaîtra les uns sur les autres, comme vous l'expliquez. Cela est dû au fait que la position (0,0) à laquelle les enfants sont positionnés par rapport à la toile sera la partie supérieure gauche du panneau de pile (le même point pour toutes les toiles et tous leurs enfants).

Essayez ce qui suit à 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 les deux lignes de texte sont superposées l'une sur l'autre.

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.

Espérons que cela aide.

+0

J'avais pour tous les éléments à l'intérieur, pas pour, la toile joliment présent ailleurs ... tx man – Peter

Questions connexes