This article has been localized into Portuguese by the community.
O controle StackPanel
O StackPanel é muito parecido com o WrapPanel, mas com pelo menos uma diferença importante: o StackPanel não envolve o conteúdo. Em vez disso, ele estica o conteúdo em uma direção, permitindo empilhar item após item, um sobre o outro. Vamos primeiro tentar um exemplo bem simples, como fizemos com o 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>
A primeira coisa que você deve notar é como o StackPanel realmente não se importa se há ou não espaço suficiente para o conteúdo. Ele não envolve o conteúdo de forma alguma e não fornece automaticamente a capacidade de rolar (você pode usar um controle ScrollViewer para isso - veremos mais sobre isso em um capítulo posterior).
Você também pode perceber que a orientação padrão do StackPanel é Vertical, ao contrário do WrapPanel, onde a orientação padrão é Horizontal. Mas assim como para o WrapPanel, isso pode ser facilmente alterado, usando a propriedade Orientation:
<StackPanel Orientation="Horizontal">
Outra coisa que você provavelmente notará é que o StackPanel estende seu controle filho por padrão. Em um StackPanel alinhado verticalmente, como o do primeiro exemplo, todos os controles filho são esticados horizontalmente. Em um StackPanel alinhado horizontalmente, todos os controles filho são esticados verticalmente, como visto acima. O StackPanel faz isso definindo a propriedade HorizontalAlignment ou VerticalAlignment em seus controles filho como Stretch, mas você pode facilmente substituir isso se desejar. Dê uma olhada no próximo exemplo, onde usamos a mesma marcação que fizemos no exemplo anterior, mas, desta vez, atribuímos valores à propriedade VerticalAlignment para todos os controles filho:
<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>
Usamos os valores Top, Center e Bottom para colocar os botões em um bom padrão, apenas para chutes. O mesmo pode ser feito para um StackPanel alinhado verticalmente, onde você usaria o HorizontalAlignment nos controles filho:
<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>
Como você pode ver, os controles ainda vão de cima para baixo, mas em vez de ter a mesma largura, cada controle é alinhado à esquerda, à direita ou ao centro.