Оглавление
Введение
Часть I. Базовые сведения
Глава 1. Почему именно WPF и как насчет Silverlight?
Взгляд в прошлое
Появление WPF
Эволюция WPF
Усовершенствования в WPF 3.5 и WPF 3.5 SP1
Усовершенствования в WPF 4
Что такое Silverlight
Резюме
Глава 2. Все тайны XAML
Определение XAML
Элементы и атрибуты
Пространства имен
Элементы свойств
Конвертеры типов
Расширения разметки
Дочерние объектные элементы
Свойство Content
Элементы коллекций
Еще о преобразовании типов
Сочетание XAML и процедурного кода
Загрузка и разбор XAML во время выполнения
Компиляция XAML
Введение в XAML2009
Полная поддержка универсальных классов
Словарные ключи произвольного типа
Встроенные системные типы данных
Создание объектов с помощью конструктора с аргументами
Создание экземпляров с помощью фабричных методов
Гибкость присоединения обработчиков событий
Определение новых свойств
Трюки с классами чтения и записи XAML
Обзор
Циклы обработки узлов
Чтение XAML
Запись в объекты
Запись в формате XML
XamlServices
Ключевые слова XAML
Резюме
Возражение 1: XML слишком многословен, долго набирать
Возражение 2: системы, основанные на XML, низкопроизводительны
Глава 3. Основные принципы WPF
Обзор иерархии классов
Логические и визуальные деревья
Свойства зависимости
Реализация свойства зависимости
Уведомление об изменении
Наследование значений свойств
Поддержка нескольких поставщиков
Присоединенные свойства
Резюме
Часть II. Создание WPF-приложения
Глава 4. Задание размера, положения и преобразований элементов
Управление размером
Свойства Height и Width
Свойства Margin и Padding
Свойство Visibility
Управление положением
Выравнивание
Выравнивание содержимого
Свойство FlowDirection
Применение преобразований
Преобразование RotateTransform
Преобразование ScaleTransform
Преобразование SkewTransform
Преобразование TranslateTransform
Преобразование MatrixTransform
Комбинирование преобразований
Резюме
Глава 5. Компоновка с помощью панелей
Панель Canvas
Панель StackPanel
Панель WrapPanel
Панель DockPanel
Панель Grid
Задание размеров строк и столбцов
Интерактивное задание размера с помощью GridSplitter
Задание общего размера для строк и столбцов
Сравнение Grid с другими панелями
Примитивные панели
Панель TabPanel
Панель ToolBarPanel
Панель ToolBarOverflowPanel
Панель ToolBarTray
Панель UniformGrid
Панель SelectiveScrollingGrid
Обработка переполнения содержимого
Отсечение
Прокрутка
Масштабирование
Все вместе: создание сворачиваемой, стыкуемой, изменяющей размер панели
Резюме
Глава 6. События ввода: клавиатура, мышь, стилус и мультисенсорные устройства
Маршрутизируемые события
Реализация маршрутизируемого события
Стратегии маршрутизации и обработчики событий
Маршрутизируемые события в действии
Присоединенные события
События клавиатуры
События мыши
Класс MouseEventArgs
Перетаскивание
Захват мыши
События стилуса
Класс StylusDevice
События
Мультисенсорные события
Простые события касания
События манипулирования, описывающие сдвиг, поворот и масштабирование
Команды
Встроенные команды
Выполнение команд с помощью жестов ввода
Элементы управления со встроенными привязками к командам
Резюме
Глава 7. Структурирование и развертывание приложения
Стандартные приложения Windows
Класс Window
Класс Application
Показ заставки
Создание и показ диалоговых окон
Сохранение и восстановление состояния приложения
Развертывание: технология ClickOnce и установщик Windows
Приложения Windows с навигацией
Страницы и их навигационные контейнеры
Переходы между страницами
Передача данных между страницами
Приложения-гаджеты
XAML-приложения для браузера
Ограниченный набор возможностей
Интегрированная навигация
Развертывание
Автономные XAML-страницы
Резюме
Глава 8. Особенности Windows 7
Списки переходов
Элемент JumpTask
Элемент JumpPath
Настройка элементов на панели задач
Индикатор выполнения для элемента на панели задач
Наложения для элементов на панели задач
Настройка содержимого эскиза
Добавление кнопок управления к эскизу на панели задач
Функция Aero Glass
Функция TaskDialog
Резюме
Часть III. Элементы управления
Глава 9. Однодетные элементы управления
Кнопки
Класс Button
Класс RepeatButton
Класс ToggleButton
Класс CheckBox
Класс RadioButton
Простые контейнеры
Класс Label
Класс ToolTip
Класс Frame
Контейнеры с заголовками
Класс GroupBox
Класс Expander
Резюме
Глава 10. Многодетные элементы управления
Общая функциональность
DisplayMemberPath
ItemsPanel
Управление поведением прокрутки
Селекторы
Элемент ComboBox
Элемент ListBox
Элемент ListView
Элемент TabControl
Элемент DataGrid
Меню
Элемент Menu
Элемент ContextMenu
Другие многодетные элементы управления
Элемент TreeView
Элемент ToolBar
Элемент StatusBar
Резюме
Глава 11. Изображения, текст и другие элементы управления
Элемент управления Image
Элементы управления Text и Ink
Элемент TextBlock
Элемент TextBox
Элемент RichTextBox
Элемент PasswordBox
Элемент InkCanvas
Документы
Создание потоковых документов
Отображение потоковых документов
Добавление комментариев
Диапазонные элементы управления
Элемент ProgressBar
Элемент Slider
Календарные элементы управления
Элемент Calendar
Элемент DatePicker
Резюме
Часть IV. Средства для профессиональных разработчиков
Глава 12. Ресурсы
Двоичные ресурсы
Определение двоичного ресурса
Доступ к двоичным ресурсам
Локализация двоичных ресурсов
Логические ресурсы
Поиск ресурса
Статические и динамические ресурсы
Взаимодействие с системными ресурсами
Резюме
Глава 13. Привязка к данным
Знакомство с объектом Binding
Использование объекта Binding в процедурном коде
Использование объекта Binding в XAML
Привязка к обычным свойствам .NET
Привязка ко всему объекту
Привязка к коллекции
Обобществление источника с помощью DataContext
Управление визуализацией
Форматирование строк
Шаблоны данных
Конвертеры значений
Настройка представления коллекции
Сортировка
Группировка
Фильтрация
Навигация
Дополнительные представления
Поставщики данных
Класс XmlDataProvider
Класс ObjectDataProvider
Дополнительные вопросы
Настройка потока данных
Добавление в привязку правил проверки
Работа с несколькими источниками
А теперь все вместе: клиент Twitter на чистом XAML
Резюме
Глава 14. Стили, шаблоны, обложки и темы
Стили
Обобществление стилей
Триггеры
Шаблоны
Введение в шаблоны элементов управления
Обеспечение интерактивности с помощью триггеров
Ограничение типа целевого элемента
Учет свойств шаблонародителя
Учет визуальных состояний с помощью триггеров
Учет визуальных состояний с помощью менеджера визуальных состояний
Комбинирование шаблонов со стилями
Обложки
Темы
Системные цвета, шрифты и параметры
Стили и шаблоны тем
Резюме
Часть V. Мультимедиа
Глава 15. Двумерная графика
Класс Drawing
Класс Geometry
Класс Pen
Пример изображения
Класс Visual
Наполнение DrawingVisual содержимым
Отображение объекта Visual на экране
Проверка попадания в Visual
Класс Shape
Класс Rectangle
Класс Ellipse
Класс Line
Класс Polyline
Класс Polygon
Класс Path
Изображение, составленное из объектов Shape
Кисти
Цветные кисти
Мозаичные кисти
Кисти как маски непрозрачности
Эффекты
Повышение производительности визуализации
Класс RenderTargetBitmap
Класс BitmapCache
Класс BitmapCacheBrush
Резюме
Глава 16. Трехмерная графика
Введение в трехмерную графику
Камеры и системы координат
Свойство Position
Свойство LookDirection
Свойство UpDirection
Классы OrthographicCamera и PerspectiveCamera
Класс Transform3D
Преобразование TranslateTransform3D
Преобразование ScaleTransform3D
Преобразование RotateTransform3D
Комбинирование преобразований Transform3D
Класс Model3D
Класс Light
Класс GeometryModel3D
Класс Model3DGroup
Класс Visual3D
Класс ModelVisual3D
Класс UIElement3D
Класс Viewport2DVisual3D
Проверка попадания в трехмерном пространстве
Класс Viewport3D
Преобразование двумерных и трехмерных систем координат
Метод Visual.TransformToAncestor
Методы Visual3D.TransformToAncestor и Visual3D.TransformToDescendant
Резюме
Глава 17. Анимация
Анимация в процедурном коде
Выполнение анимации "вручную"
Введение в классы анимации
Простые приемы работы с анимацией
Анимация в XAML-коде
Триггеры событий и раскадровки
Использование раскадровки как временной шкалы
Анимация с опорными кадрами
Линейные опорные кадры
Сплайновые опорные кадры
Дискретные опорные кадры
Переходные опорные кадры
Переходные функции
Встроенные переходные функции
Другие встроенные переходные функции
Написание своей переходной функции
Анимация и менеджер визуальных состояний
Переходы
Резюме
Глава 18. Аудио, видео и речь
Аудио
Класс SoundPlayer
Класс SoundPlayerAction
Класс MediaPlayer
Классы MediaElement и MediaTimeline
Видео
Управление визуальными аспектами класса MediaElement
Управление мультимедийным содержимым
Речь
Синтез речи
Распознавание речи
Резюме
Часть VI. Дополнительные вопросы
Глава 19. Интероперабельность с другими технологиями
Встраивание элементов управления Win32 в WPF-приложения
Элемент управления Win32 Webcam
Использование элемента управления Webcam в WPF
Поддержка навигации с помощью клавиатуры
Встраивание элементов управления WPF в Win32-приложения
Введение в HwndSource
Обеспечение правильной компоновки
Встраивание элементов управления Windows Forms в WPF-приложения
Встраивание PropertyGrid с помощью процедурного кода
Встраивание элемента PropertyGrid с помощью XAML
Встраивание элементов управления WPF в приложения Windows Forms
Сочетание содержимого DirectX с содержимым WPF
Встраивание элементов управления ActiveX в WPF-приложения
Резюме
Глава 20. Пользовательские и нестандартные элементы управления
Создание пользовательского элемента управления
Создание пользовательского интерфейса элемента управления
Наделение пользовательского элемента управления поведением
Включение в пользовательский элемент управления свойств зависимости
Включение в пользовательский элемент управления маршрутизируемых событий
Создание нестандартного элемента управления
Программирование поведения нестандартного элемента
Создание пользовательского интерфейса нестандартного элемента управления
Некоторые соображения о более сложных элементах управления
Резюме
Глава 21. Компоновка с помощью нестандартных панелей
Взаимодействие между родителями и потомками
Этап измерения
Этап размещения
Создание панели SimpleCanvas
Создание панели SimpleStackPanel
Создание панели OverlapPanel
Создание панели FanCanvas
Резюме
Алфавитный указатель