Содержание
Контейнер WrapPanel
позволяет расположить элементы либо по горизонтали, либо по вертикали. При этом, если очередной элемент управления не может полностью разместиться в строке или столбце, то он переносится на новую строку или в новый столбец внутри контейнера.
Пример использования WrapPanel
Ниже представлен пример использования WrapPanel
, в котором элементы расположены по горизонтали:
<Window x:Class="WpfApp2.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:WpfApp2" mc:Ignorable="d" Title="MainWindow" Height="300" Width="400"> <WrapPanel Orientation="Horizontal"> <Border BorderBrush="Blue" BorderThickness="1" Background="Blue" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="White" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="Red" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="Yellow" Width="100" Height="50"/> </WrapPanel> </Window>
При запуске приложения мы увидим, что все элементы расположились в одной строке:
Если же мы уменьшим ширину окна, то элементы, расположенные в контейнере начнут поочередно переноситься на следующие строки. Например, так:
Аналогичным образом WrapPanel
работает и в случае расположения элементов по вертикали, только, в этом случае, элементы будут переноситься в новы столбцы. Например,
<Window x:Class="WpfApp2.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:WpfApp2" mc:Ignorable="d" Title="MainWindow" Height="275" Width="400"> <WrapPanel Orientation="Vertical" > <Border BorderBrush="Blue" BorderThickness="1" Background="Blue" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="White" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="Red" Width="100" Height="50"/> <Border BorderBrush="Blue" BorderThickness="1" Background="Yellow" Width="100" Height="50"/> </WrapPanel> </Window>
Результат:
Теперь уменьшим высоту окна так, чтобы последнему элементу внутри контейнера не хватило места:
Итого
Компонент WrapPanel
по своим свойствам похож на рассмотренный ранее контейнер StackPanel
. Основное отличие WrapPanel
от StackPanel
заключается в том, что WrapPanel
переносит элементы на новую строку или в новый столбец (в зависимости от варианта размещения элементов), если элементу не хватает места, чтобы полностью уместиться в контейнере.