УДК 004.75
ББК 32.973.26-018.2
П44
Рецензенты: кафедра ИУ7 Московского государственного технического
университета им. Н. Э. Баумана (заведующий кафедрой профессор
Рудаков И. В.);
Сошников Д. В., к. ф.-м. н., доцент, старший технологический
евангелист, Майкрософт Россия.
П44 Подбельский В. В.
Язык декларативного программирования XAML. – М.: ДМК Пресс,
2018. – 336 с.: ил.
ISBN 978-5-97060-655-1
Книга посвящена языку XAML – центральному звену таких современных
платформ и средств программирования, как WPF,
UWP и Xamarin.Forms. Изложены основные положения синтаксиса
XAML, и на многочисленных примерах показаны возможности
механизмов XAML, отличающих этот язык от таких уже традиционных
языков разметки, как, например, HTML. Кроме синтаксиса
XAML, описаны пространства имен, ключевые слова XAML, наиболее
полезные элементы управления, применяемые для создания
интуитивно понятного пользовательского интерфейса. Объясняются
особенности зависимых и присоединенных свойств, описаны
механизмы расширения разметки и привязки данных. Показаны
возможности ресурсов, стилей и шаблонов. Рассмотрены средства
трансформации изображений элементов управления и объектов,
создаваемых пользователем. Рассмотрены вопросы представления
растровых изображений и создания объектов векторной графики.
Особое внимание уделено триггерам данных и триггерам событий.
Подробно изложены механизмы и средства анимации.
Книга предназначена для разработчиков программных продуктов
(дизайнеров и программистов), использующих платформу
.NET, которая в настоящее время доступна во всех основных операционных
системах (Windows, iOS, Android, Linux).
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами
без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство
не может гарантировать абсолютную точность и правильность приводимых
сведений. В связи с этим издательство не несет ответственности за
возможные ошибки, связанные с использованием книги.
ISBN 978-5-97060-655-1
© Подбельский В. В., 2018.
© Оформление, издание, ДМК Пресс, 2018
Стр.3
Оглавление
Предисловие ....................................................................................................6
Глава 1. XAML как XML-приложение ..........................................................14
Пространства имен ....................................................................... 17
Автономные XAML-документы ....................................................... 18
Синтаксис XML и синтаксис XAML ................................................. 20
Пространства имен в XAML-документах ........................................ 26
Обработка XAML-документов ........................................................ 29
XAML и резервные типы .NET ......................................................... 32
Свойства XAML-элементов ............................................................ 34
Содержимое XAML-элемента ........................................................ 36
Свойства размеров и позиционирования XAML-элементов ........... 42
Элемент Border ............................................................................. 47
Глава 2. Расширенный синтаксис XAML ....................................................50
Зависимые свойства XAML-элементов .......................................... 50
Присоединенные свойства (Attached Properties)............................ 57
Конвертеры типов для значений атрибутов ................................... 60
Расширение разметки (Markup Extensions) .................................... 63
Расширение разметки x:Static ....................................................... 65
Привязка данных (Data Binding) ..................................................... 68
Синтаксис вложенных расширений .............................................. 75
Глава 3. Ресурсы, стили и шаблоны ............................................................78
Ресурсы ........................................................................................ 78
Файл ресурсов .............................................................................. 85
Системные ресурсы ...................................................................... 87
Массив в качестве ресурса (x:Array) .............................................. 90
Стили ............................................................................................ 91
Наследование стилей ...................................................................100
Свойства-коллекции элемента Style .............................................102
Шаблоны ......................................................................................102
Глава 4. Простые геометрические формы ............................................. 109
Класс Shape и производные классы геометрических форм ..........109
Элементы Line, Polygon и Polyline .................................................112
Элементы Rectangle и Ellipse ........................................................122
Стр.4
4 Оглавление
Глава 5. Аффинные преобразования на плоскости .............................. 126
XAML-элементы аффинных преобразований ................................126
Элемент RotateTransform ..............................................................129
Элемент MatrixTransform .............................................................136
Элемент TranslateTransform ..........................................................140
Элемент ScaleTransform ...............................................................142
Элемент SkewTransform ...............................................................150
Элементы CompositeTransform и TransformGroup ..........................157
Глава 6. Элемент Path и класс Geometry ................................................. 162
Элементы LineGeometry, EllipseGeometry, RectangleGeometry .......164
GeometryGroup и CombinedGeometry ............................................169
Возможности класса PathGeometry ..............................................175
Мини-язык разметки траекторий ..................................................188
Глава 7. Кисти .............................................................................................. 198
Кисть SolidColorBrush и цвет в XAML ............................................198
Градиентные кисти .......................................................................203
Кисть LinearGradientBrush.............................................................205
Кисть RadialGradientBrush ............................................................211
TileBrush – мозаичная (плиточная, изразцовая) кисть ...................216
Кисть ImageBrush ........................................................................217
Кисть DrawingBrush ......................................................................228
Кисть VisualBrush ..........................................................................237
Глава 8. Триггеры ........................................................................................ 242
Виды триггеров ............................................................................242
Триггер свойств Tigger .................................................................243
Мультитриггер свойств MultiTrigger ..............................................249
Триггер данных DataTrigger ...........................................................251
Мультитриггер данных MultiDataTrigger ........................................253
О триггере событий EventTrigger ..................................................256
Глава 9. Анимация ...................................................................................... 259
Элемент Action – действия в триггере ..........................................259
Структура XAML-документа с анимацией ......................................261
Классы временных анимационных шкал .......................................266
Анимация на основе линейной интерполяции...............................273
Анимация по ключевым кадрам ....................................................281
Дискретная анимация по ключевым кадрам .................................284
Линейная анимация по ключевым кадрам ....................................286
Сплайновая анимация по ключевым кадрам .................................290
Стр.5
Оглавление 5
Анимация с использованием траектории .....................................297
Глава 10. XAML и императивный код ......................................................307
Обработчики событий в императивном коде ................................307
Императивный код в тексте XAML-разметки .................................319
Литература и ссылки на электронные ресурсы .................................... 323
Предметный указатель ............................................................................. 328
Стр.6