Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

<GridSplitter Grid.Column ="0" Width ="5"/>

<!-- Добавить метку в ячейку 1 -- >

<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"/>

</StackPanel>

</ScrollViewer>

Результат визуализации приведенного определения XAML представлен на рис. 25.9 (обратите внимание на то, что справа в окне отображается линейка прокрутки, т.к. размера окна не хватает, чтобы показать все пять кнопок).

Как и можно было ожидать, каждый класс панели предлагает многочисленные члены, позволяющие точно настраивать размещение содержимого. В качестве связанного замечания: многие элементы управления WPF поддерживают два удобных свойства (

Padding
и
Margin
), которые предоставляют элементу управления возможность самостоятельного информирования панели о том, как с ним следует обращаться. В частности, свойство
Padding
управляет тем, сколько свободного пространства должно окружать внутренний элемент управления, а свойство
Margin
контролирует объем дополнительного пространства вне элемента управления.

На этом краткий экскурс в основные типы панелей WPF и различные способы позиционирования их содержимого завершен. Далее будет показано, как использовать визуальные конструкторы Visual Studio для создания компоновок.

Конфигурирование панелей с использованием визуальных конструкторов Visual Studio

Теперь, когда вы ознакомились с разметкой XAML, применяемой при определении ряда общих диспетчеров компоновки, полезно знать, что IDE-среда Visual Studio предлагает очень хорошую поддержку для конструирования компоновок. Ключевым компонентом является окно Document Outline, описанное ранее в главе. Чтобы проиллюстрировать некоторые основы, мы создадим новый проект приложения WPF по имени

VisualLayoutTester
.

В первоначальной разметке для Window по умолчанию используется диспетчер компоновки

Grid
:

<Window x:Class="VisualLayoutTester.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:local="clr-namespace:VisualLayoutTesterApp"

Поделиться:
Популярные книги

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Отмороженный 6.0

Гарцевич Евгений Александрович
6. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 6.0

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Не кровный Брат

Безрукова Елена
Любовные романы:
эро литература
6.83
рейтинг книги
Не кровный Брат

Сумеречный Стрелок 3

Карелин Сергей Витальевич
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 3

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Темный Патриарх Светлого Рода 4

Лисицин Евгений
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 4

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Попала, или Кто кого

Юнина Наталья
Любовные романы:
современные любовные романы
5.88
рейтинг книги
Попала, или Кто кого

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Провинциал. Книга 7

Лопарев Игорь Викторович
7. Провинциал
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Провинциал. Книга 7