Оглавление
Введение
Часть 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
Резюме
Алфавитный указатель