Особенности компоновки в WPF
• Окно в WPF может содержать только один элемент.
• Размеры элементов не должны быть заданы явно.
• Элементы не отражают свое положение с помощью
экранных координат.
• Контейнеры компоновки разделяют доступное
пространство между своими дочерними элементами.
• Контейнеры компоновки допускают вложения.
Процесс компоновки
Измерение — контейнер компоновки просматривает свои дочерние
элементы и запрашивает у них предпочтительный размер.
Упорядочивание – контейнер компоновки помещает элементы
управления в соответствующие позиции.
Базовые контейнеры компоновки
Grid – выстраивает элементы в строки и колонки невидимой таблицы. Это один из наиболее гибких и широко используемых контейнеров компоновки.
StackPanel – размещает элементы в горизонтальном или вертикальном стеке.
Этот контейнер компоновки обычно используется в небольших разделах крупного и более сложного окна.
DockPanel – выстраивает элементы по краю контейнера.
WrapPanel – размещает элементы в последовательностях строк с переносом. В горизонтальной ориентации WrapPanel располагает элементы в строке слева направо, затем переходит к следующей строке. В вертикальной ориентации WrapPanel располагает элементы сверху вниз, используя дополнительные колонки для дополнения оставшихся элементов .
UniformGrid – помещает элементы в невидимую таблицу, устанавливая одинаковый размер для всех ячеек. Данный контейнер компоновки используется нечасто.
Canvas – позволяет элементам позиционироваться по фиксированным координатам. Это неподходящий выбор для окон переменного размера, если только вы не собираетесь взвалить на свои плечи значительный объем работы.
InkCanvas – в WPF также имеется элемент InkCanvas, главное предназначение которого заключается в обеспечении перьевого ввода, а также считывания жестов пользователя.
Z-Порядок – при наличии более одного перекрывающегося элемента с
помощью присоединенного свойства Canvas.Zindex можно управлять их расположением.Обычно все добавляемые элементы имеют одинаковый Zindex— Элементы с одинаковым Zindex отображаются в том порядке, в каком они представлены в коллекции Canvas.Children. Который основан на порядке их определения в разметке XAML.
Вложение контейнеров компоновки. Панели StackPanel, WrapPanel и DockPanel редко используются сами по себе. Вместо этого они применяются для формирования частей интерфейса. Например панель DockPanel можно использовать для размещения разных контейнеров StackPanel и WrapPanel в соответствующих областях окна.