Имейте в виду, что для того, чтобы разделитель был виден на экране, потребуется присвоить значение его свойству
Width
или
Height
(в зависимости от вертикального или горизонтального разделения). Ниже показана простая панель
Grid
с разделителем на первой колонке (
Grid.Column="0"
) из файла
GridWithSplitter.xaml
:
<Grid Background ="LightSteelBlue">
<b> <!-- Определить колонки --></b>
<Grid.ColumnDefinitions>
<ColumnDefinition Width ="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<b> <!— Добавить метку в ячейку 0 --></b>
<Label x:Name="lblLeft" Background ="GreenYellow"
Grid.Column="0" Content ="Left!"/>
<b> <!-- Определить разделитель —></b>
<GridSplitter Grid.Column ="0" Width ="5"/>
<b> <!-- Добавить метку в ячейку 1 -- ></b>
<Label x:Name="lblRight" Grid.Column ="1" Content ="Right!"/>
</Grid>
Прежде всего, обратите внимание, что колонка, которая будет поддерживать разделитель, имеет свойство
Width
, установленное в
Auto
. Вдобавок элемент
GridSplitter
использует синтаксис присоединяемых свойств для указания, с какой колонкой он работает. В выводе (рис. 25.7) можно заметить 5-пиксельный разделитель, который позволяет изменять размер каждого элемента
Label
. Из-за того, что для элементов
Label
не было задано свойство
Height
или
Width
, они заполняют всю ячейку.
Позиционирование содержимого внутри панелей DockPanel
Панель
DockPanel
обычно применяется в качестве контейнера, который содержит любое количество дополнительных панелей для группирования связанного содержимого. Панели
DockPanel
используют синтаксис присоединяемых свойств (как было показано в типах
Canvas
и
Grid
) для управления местом, куда будет пристыковываться каждый элемент внутри
DockPanel
.
В файле
SimpleDockPanel.xaml
определена следующая простая панель
DockPanel
, которая дает результат, показанный на рис. 25.8:
<DockPanel LastChildFill ="True" Background="AliceBlue">
<! -- Стыковать элементы к панели -- >
<Label DockPanel.Dock ="Top" Name="lblInstruction" FontSize="15"
Content="Enter Car
Information"/>
<Label DockPanel.Dock ="Left" Name="lblMake" Content="Make"/>
<Label DockPanel.Dock ="Right" Name="lblColor" Content="Color"/>
<Label DockPanel.Dock ="Bottom" Name="lblPetName" Content="Pet Name"/>
<Button Name="btnOK" Content="OK"/>
</DockPanel>
На заметку! Если добавить множество элементов к одной стороне
DockPanel
, то они выстроятся вдоль указанной грани в порядке их объявления.
Преимущество применения типов
DockPanel
заключается в том, что при изменении пользователем размера окна каждый элемент остается прикрепленным к указанной (посредством
DockPanel.Dock
) стороне панели. Также обратите внимание, что внутри открывающего дескриптора
DockPanel
в этом примере атрибут
LastChildFill
установлен в
true
. Поскольку элемент
Button
на самом деле является "последним дочерним" элементом в контейнере, он будет растянут, чтобы занять все оставшееся пространство.
Включение прокрутки в типах панелей
Полезно упомянуть, что в рамках инфраструктуры WPF поставляется класс
ScrollViewer
, который обеспечивает автоматическое поведение прокрутки данных внутри объектов панелей. Вот как он определяется в файле
SimpleScrollViewer.xaml
:
<ScrollViewer>
<StackPanel>
<Button Content ="First" Background = "Green" Height ="50"/>
<Button Content ="Second" Background = "Red" Height ="50"/>
<Button Content ="Third" Background = "Pink" Height ="50"/>
<Button Content ="Fourth" Background = "Yellow" Height ="50"/>
<Button Content ="Fifth" Background = "Blue" Height ="50"/>