Это более простой элемент компоновки. Он располагает все элементы в ряд либо по горизонтали, либо по вертикали в зависимости от ориентации. Например,
<Window x:Class="LayoutApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:LayoutApp" mc:Ignorable="d" Title="StackPanel" Height="300" Width="300"> <Grid> <StackPanel> <Button Background="Blue" Content="1" /> <Button Background="White" Content="2" /> <Button Background="Red" Content="3" /> </StackPanel> </Grid> </Window>
В данном случае для свойства Orientation по умолчанию используется значение Vertical
, то есть StackPanel создает вертикальный ряд,
в который помещает все вложенные элементы сверху вниз. Мы также можем задать горизонтальный стек. Для этого нам надо указать свойство
Orientation="Horizontal"
:
<Window x:Class="LayoutApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:LayoutApp" mc:Ignorable="d" Title="StackPanel" Height="300" Width="300"> <StackPanel Orientation="Horizontal"> <Button Background="Blue" MinWidth="30" Content="1" /> <Button Background="White" MinWidth="30" Content="2" /> <Button Background="Red" MinWidth="30" Content="3" /> </StackPanel> </Window>
При горизонтальной ориентации все вложенные элементы располагаются слева направо. Если мы хотим, чтобы наполнение стека начиналось справа налево,
то нам надо задать свойство FlowDirection
: <StackPanel Orientation="Horizontal" FlowDirection="RightToLeft">
.
По умолчанию это свойство имеет значение LeftToRight
- то есть слева направо.