This article has been localized into Ukrainian by the community.
Контейнер StackPanel
StackPanel дуже схожий до на WrapPanel, однак він має одну відмінність: StackPanel не обгортає свій вміст. Замість цього він вирівнює вміст в один рядок, дозволяючи складати елементи один на одний. Погляньмо на цей простий приклад, схожий на той, що був із 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>
Перше, що слід запам'ятати - це те, що StackPanel не стежить за тим чи достатньо місця для вмісту. Він жодним чином не загортає свій вміст і не дає можливість його гортати, принаймні за умовчуванням (для цього можна використати елемент ScrollViewer - про нього детальніше в окремій статті).
Крім того, за умовчуванням, цей контейнер має вертикальну орієнтацію, на відміну від WrapPanel. Однак це так само легко можна змінити, використавши властивість Orientation:
<StackPanel Orientation="Horizontal">
Крім того слід пам'ятати, що StackPanel, за умовчуванням, розтягує дочірні елементи, в залежності від своєї орієнтації: горизонтально при вертикальній (приклад на початку) і навпаки (приклад над абзацом). Для цього контейнер змінює властивості HorizontalAlignment та VerticalAlignment цих елементів. Однак і цю поведінку можна перевантажити, задавши значення цих властивостей вручну, як тут:
<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>
Ми використали значення Top, Center та Bottom, щоб розставити кнопки у формі візерунку. Те ж саме можна зробити і з вертикально орієнтованим контейнером StackPanel, змінивши значення властивості HorizontalAlignment:
<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>
Як ви бачите, елементи досі розміщуються з низу в верх. Однак замість того, щоб мати однакову ширину, кожен елемент вирівнюється по лівому чи правому краю або по центру.