This article has been localized into Russian 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 абсолютно все-равно достаточно ли пространства для вашего содержимого или нет. StackPanel не будет сворачивать содержимое, так же не обеспечит вас возможностью прокручивания ( для этого можно использовать ScrollViewer - но об этом позже, в следующих главах)
Вы так же можете заметить, что начальное напраление у StackPanel - веритикальное, в отличие от WrapPanel - где начальное напраление горизонтальное. Но так же как и в WrapPanel это может быть легко измененно при помощи свойства Orientation (Horizontal/Vertical)
<StackPanel Orientation="Horizontal">
Другая деталь которую вы скорее всего заметите, это то, что StackPanel растягивает по умолчанию свой дочерний элемент. На вертикально выровненной StackPanel, как в первом примере, все дочерние элементы растянуты горизонтально. С горизонтальным выравниванием, все дочерние элементы растянуты вертикально, как это видно в примере выше. StackPanel делает это при помощи установки свойств HorizontalAlignment или VerticalAlignment для своих дочерних элементов, но вы можете при необходимости их легко поменять. Взгляните на следующий пример, где мы используем такую же разметку, как и в предыдущем примере, но изменив значения 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>
Как вы можете заметить, элементы управления до сих пор идут сверху вниз, но вместо того, чтобы иметь общую ширину, каждый из них выровнен слева, справа или по центру