TOC

This article has been localized into French by the community.

Panels:

Le StackPanel

Le StackPanel est très semblable au WrapPanel, mais avec une importance de taille: le StackPanel ne "replie" pas son contenu, il ne créé pas de nouvelle ligne ou colonne. Il va plutôt s'étendre dans une direction, vous laissant empiler des éléments les uns après les autres. Essayons d'abord avec un exemple très simple, comme nous l'avions fait avec le WrapPanel:

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel>
		<Button>Button 1</Button>
		<Button>Button 2</Button>
		<Button>Button 3</Button>
		<Button>Button 4</Button>
		<Button>Button 5</Button>
		<Button>Button 6</Button>
	</StackPanel>
</Window>

La première chose que vous devriez remarquer est que le StackPanel ne tient pas vraiment compte de l'espace disponible pour son contenu. Il ne va pas créer de nouvelles lignes ou de nouvelles colonnes, et il ne vous donne pas automatiquement la possibilité de faire défiler le contenu/de scroller (Vous pouvez utiliser un ScrollViewer pour cela - ce que nous verrons dans un chapitre ultérieur).

Vous remarquerez également que l'orientation par défaut du StackPanel est verticale, contrairement à celle du WrapPanel qui est horizontale. Mais bien sûr, tout comme le WrapPanel cela peut être changé facilement en utilisant la propriété Orientation:

<StackPanel Orientation="Horizontal">

Une autre chose que vous remarquerez est que le StackPanel étire son contenu par défaut. Sur un StackPanel à orientation verticale, comme dans notre premier exemple, tous les contrôles sont étirés horizontalement. Dans un StackPanel horizontal, tous les contrôles enfants sont étirés verticalement. Cela est dû aux propriétés HorizontalAlignement et VerticalAlignement qui sont initialisées à Strectch pour chacun des contrôles enfants. Mais cela peut être modifié facilement si vous le souhaitez. Regardez l'exemple suivant, où nous utilisons les mêmes composants, mais en changeant la valeur du VerticalAlignement pour chacun des enfants.

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel Orientation="Horizontal">
		<Button VerticalAlignment="Top">Button 1</Button>
		<Button VerticalAlignment="Center">Button 2</Button>
		<Button VerticalAlignment="Bottom">Button 3</Button>
		<Button VerticalAlignment="Bottom">Button 4</Button>
		<Button VerticalAlignment="Center">Button 5</Button>
		<Button VerticalAlignment="Top">Button 6</Button>
	</StackPanel>
</Window>

Nous utilisons les valeurs Center, Bottom et Top pour placer les boutons d'une plus jolie façon. La même chose peut bien sûr être effectuée avec un StackPanel vertical, cette fois en utilisant la propriété HorizontalAlignement pour chacun des contrôles enfants:

<Window x:Class="WpfTutorialSamples.Panels.StackPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StackPanel" Height="160" Width="300">
	<StackPanel Orientation="Vertical">
		<Button HorizontalAlignment="Left">Button 1</Button>
		<Button HorizontalAlignment="Center">Button 2</Button>
		<Button HorizontalAlignment="Right">Button 3</Button>
		<Button HorizontalAlignment="Right">Button 4</Button>
		<Button HorizontalAlignment="Center">Button 5</Button>
		<Button HorizontalAlignment="Left">Button 6</Button>
	</StackPanel>
</Window>

Comme vous pouvez le voir, les contrôles vont du haut vers le bas, mais au lieu d'être étirés, chacun est aligné à gauche, au centre ou à droite.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!