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

на главную

Жанры

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

Более глубокое исследование API-интерфейсов и элементов управления WPF

В оставшемся материале главы будет построено новое приложение WPF с применением Visual Studio. Целью является создание пользовательского интерфейса, который состоит из виджета

TabControl
, содержащего набор вкладок. Каждая вкладка будет иллюстрировать несколько новых элементов управления WPF и интересные API-интерфейсы, которые могут быть задействованы в разрабатываемых проектах. Попутно вы также узнаете о дополнительных возможностях визуальных конструкторов WPF из Visual Studio.

Работа с элементом управления TabControl

Первым

делом создайте новый проект приложения WPF по имени
WpfControlsAndAPIs
. Как упоминалось ранее, начальное окно будет содержать элемент управления
TabControl
с четырьмя вкладками, каждая из которых отображает набор связанных элементов управления и/или API-интерфейсов WPF. Установите свойство
Width
окна в
800
, а свойство
Height
окна в
350
.

Перетащите элемент управления

TabControl
из панели инструментов Visual Studio на поверхность визуального конструктора и модифицируйте его разметку следующим образом:

<TabControl Name="MyTabControl" HorizontalAlignment="Stretch"

VerticalAlignment="Stretch">

<TabItem Header="TabItem">

<Grid Background="#FFE5E5E5"/>

</TabItem>

<TabItem Header="TabItem">

<Grid Background="#FFE5E5E5"/>

</TabItem>

</TabControl>

Вы заметите, что два элемента типа вкладок предоставляются автоматически. Чтобы добавить дополнительные вкладки, нужно щелкнуть правой кнопкой мыши на узле

TabControl
в окне Document Outline и выбрать в контекстном меню пункт Add TabItem (Добавить TabItem). Можно также щелкнуть правой кнопкой мыши на элементе
TabControl
в визуальном конструкторе и выбрать тот же самый пункт меню или просто ввести разметку в редакторе XAML. Добавьте одну дополнительную вкладку, используя любой из подходов.

Обновите разметку каждого элемента управления

TabItem
в редакторе XAML и измените их свойство
Header
, указывая
Ink API
,
Data Binding
и
DataGrid
. Окно визуального конструктора должно выглядеть примерно так, как на рис. 25.16.

Имейте в виду, что выбранная для редактирования вкладка становится активной, и можно формировать ее содержимое, перетаскивая элементы управления из панели инструментов. Располагая определением основного элемента управления

TabControl
, можно проработать детали каждой вкладки, одновременно изучая дополнительные средства API-интерфейса WPF.

Построение вкладки Ink API

Первая вкладка предназначена для раскрытия общей роли интерфейса Ink API, который позволяет легко встраивать в программу функциональность рисования. Конечно, его применение не ограничивается приложениями для рисования; Ink API можно использовать для разнообразных целей, включая фиксацию рукописного ввода.

На

заметку!
В оставшейся части главы (и в последующих главах, посвященных WPF) вместо применения разнообразных окон визуального конструктора будет главным образом напрямую редактироваться разметка XAML. Хотя процедура перетаскивания элементов управления работает нормально, чаще всего компоновка оказывается нежелательной (Visual Studio добавляет границы и заполнение на основе того, где размещен элемент), а потому приходится тратить значительное время на очистку разметки XAML.

Начните с замены дескриптора

Grid
в элементе управления
TabItem
, помеченном как Ink API, дескриптором
StackPanel
и добавления закрывающего дескриптора. Разметка должна иметь такой вид:

<TabItem Header="Ink API">

<StackPanel Background="#FFE5E5E5">

</StackPanel>

</TabItem>

Проектирование панели инструментов

Добавьте (используя редактор XAML) в

StackPanel
новый элемент управления
ToolBar
по имени
InkToolbar
со свойством
Height
, установленным в
60
:

<ToolBar Name="InkToolBar" Height="60">

</ToolBar>

Добавьте в

Toolbar
три элемента управления
RadioButton
внутри панели
WrapPanel
и элемента управления
Border
:

<Border Margin="0,2,0,2.4" Width="280" VerticalAlignment="Center">

<WrapPanel>

<RadioButton x:Name="inkRadio" Margin="5,10"

Content="Ink Mode!" IsChecked="True" />

<RadioButton x:Name="eraseRadio" Margin="5,10" Content="Erase Mode!" />

<RadioButton x:Name="selectRadio" Margin="5,10" Content="Select Mode!" />

</WrapPanel>

</Border>

Когда элемент управления

RadioButton
помещается не внутрь родительской панели, он получает пользовательский интерфейс, идентичный пользовательскому интерфейсу элемента управления
Button
! Именно потому элементы управления
RadioButton
были упакованы в панель
WrapPanel
.

Далее добавьте элемент

Separator
и элемент
ComboBox
, свойство
Width
которого установлено в
175
, а свойство
Margin
— в
10,0,0,0
. Добавьте три дескриптора
ComboBoxItem
с содержимым
Red
,
Green
и
Blue
и сопроводите весь элемент управления
ComboBox
еще одним элементом
Separator
:

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

СД. Восемнадцатый том. Часть 1

Клеванский Кирилл Сергеевич
31. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.93
рейтинг книги
СД. Восемнадцатый том. Часть 1

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Вечная Война. Книга VII

Винокуров Юрий
7. Вечная Война
Фантастика:
юмористическая фантастика
космическая фантастика
5.75
рейтинг книги
Вечная Война. Книга VII

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

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

Не верь мне

Рам Янка
7. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Не верь мне

Неудержимый. Книга III

Боярский Андрей
3. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга III

LIVE-RPG. Эволюция-1

Кронос Александр
1. Эволюция. Live-RPG
Фантастика:
социально-философская фантастика
героическая фантастика
киберпанк
7.06
рейтинг книги
LIVE-RPG. Эволюция-1

Колючка для высшего эльфа или сиротка в академии

Жарова Анита
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Колючка для высшего эльфа или сиротка в академии

Адский пекарь

Дрейк Сириус
1. Дорогой пекарь!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Адский пекарь

Я до сих пор не князь. Книга XVI

Дрейк Сириус
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я до сих пор не князь. Книга XVI

Огненный князь

Машуков Тимур
1. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь

Царь поневоле. Том 1

Распопов Дмитрий Викторович
4. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Царь поневоле. Том 1

Конструктор

Семин Никита
1. Переломный век
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Конструктор

Сильнейший ученик. Том 2

Ткачев Андрей Юрьевич
2. Пробуждение крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сильнейший ученик. Том 2