Главная » WPF » Элемент GridSplitter

0

Если  вам доводилось  работать  с MSN Messenger,  то вы, наверное,  заметили, что размер  области  ввода текста можно изменять;  имеется  небольшой  раздели# тель, который  дает пользователю шанс отвести  больше  места для  печати  (рис.

4.29). Описывая строки и столбцы в нашем примере, мы задали минимальный и максимальный размер второй строки, но не предоставили пользователю никакой возможности самому изменять  размеры.

GridSplitter – это обычный элемент управления (поддерживающий шаблоны и все прочее), который позволяет  пользователю самостоятельно изменять  разме# ры строк и столбцов во время работы программы. Его легко включить в наш при# мер, добавив лишь один элемент и задав некоторые свойства:

<GridSplitter Margin=’0,0,0, 2.5’ Height=’5’

ResizeDirection=’Rows’ ResizeBehavior=’CurrentAndNext’ Grid.Row=’0’

Grid.ColumnSpan=’2’ VerticalAlignment=’Bottom’

HorizontalAlignment=’Stretch’ />

Рис. 4.29. Изменение конфигурации MSN Messenger с помощью разделителя над областью текста

Свойство  ResizeDirection определяет,  где расположен разделитель:  между строками  или между столбцами,  а ResizeBehavior – какие именно строки и стол# бы подвергаются  изменению.  Есть два вида поведения  при изменении размера: явное и неявное. Значение GridResizeBehavior.BasedOnAlignment задает неявное поведение; в этом случае разделитель анализирует выравнивание по вертикали и горизонтали, чтобы «догадаться»,  какие строки  или столбцы  изменять.  Осталь# ные три значения (CurrentAndNext, PreviousAndCurrent и PreviousAndNext) поз# воляют явно указать те строки или столбцы, которые подлежат изменению (теку# щая и следующая, предыдущая и текущая, предыдущая и следующая).

Рис. 4.30. Разделитель GridSplitter в действии

Поскольку мы не создали отдельной строки для разделителя, он занимает мес# то в одной из управляемых строк (первой), так что нужно редактировать «теку# щий» столбец. Разделитель находится  в нижней  части слота, а мы хотим изме# нять размер следующей (второй) строки, поэтому свойству ResizeBehavior прис# ваиваем  значение  CurrentAndNext (рис. 4.30). Так как все свойства  выравнива# ния для разделителя установлены правильно,  то этот пример будет работать ни# чуть не хуже и тогда, когда это свойство равно BasedOnAlignment.

Grid – очень мощный, но при этом и весьма сложный  менеджер размещения. С его помощью можно создать нетривиальный пользовательский интерфейс с большим  числом  вложенных  элементов  управления или  реализовать  собствен# ную логику размещения. Бывает, впрочем, что последнее – единственный выход.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии