TOC

This article has been localized into Portuguese by the community.

Painéis:

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.


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!