165 votes

Aligner des éléments dans un panneau de pile?

Je me demandais si je pouvais avoir 2 contrôles dans un StackPanel orienté horizontalement afin que le bon élément soit ancré sur le côté droit du StackPanel.

J'ai essayé ce qui suit mais cela n'a pas fonctionné:

 <StackPanel Orientation="Horizontal">
    <TextBlock>Left</TextBlock>
    <Button Width="30" HorizontalAlignment="Right">Right<Button>
</StackPanel>
 

Dans l'extrait ci-dessus, je souhaite que le bouton soit ancré à droite du StackPanel.

Remarque: il faut que ce soit fait avec StackPanel, pas avec Grid, etc.

246voto

0xA3 Points 73439

Vous pouvez réaliser cela avec un DockPanel:

<DockPanel Width="300">
    <TextBlock>Left</TextBlock>
    <Button HorizontalAlignment="Right">Right</Button>
</DockPanel>

La différence est qu'un StackPanel va organiser les éléments enfants dans une seule ligne (verticale ou horizontale), alors qu'un DockPanel définit une zone où vous pouvez organiser les éléments d'enfant, soit horizontalement ou verticalement, les uns par rapport aux autres ( Dock propriété modifie la position d'un élément par rapport à d'autres éléments dans le même conteneur. Propriétés d'alignement, comme HorizontalAlignment, modifier la position d'un élément par rapport à son élément parent).

75voto

RusBog Points 161

Vous pouvez définir le panneau FlowDirection of Stack sur RightToLeft, puis tous les éléments seront alignés sur le côté droit.

35voto

mopsled Points 4369

Pour ceux qui tombent sur cette question, voici comment réaliser cette présentation avec un Grid :

 <Grid>
    <TextBlock Text="Server:"/>
    <TextBlock Text="http://127.0.0.1" HorizontalAlignment="Right"/>
</Grid>
 

crée

 Server:                                                          http://127.0.0.1
 

2voto

user3189858 Points 32

C'est un sujet ancien mais cela pourrait aider:

http://msdn.microsoft.com/en-us/library/ms752328(v=vs.110).aspx

-8voto

B. Clay Shannon Points 5315

Peut-être pas ce que vous voulez si vous devez éviter les valeurs de taille codées en dur, mais parfois, j'utilise un "séparateur" pour cela:

 <Separator Width="42"></Separator>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X