Основы Windows Presentation Foundation Крис Андерсон Отзывы Будучи одним из архитекторов WPF, Крис Андерсон со знанием дела объясняет не только «как», но и «почему». Эта книга – отличный источник информации для любо# го, кто хочет понять принципы проектирования и эффективного применения WPF. – Андерс Хейльсберг, технический специалист, корпорация Майкрософт Если считать, что WPF – технология создания пользовательских интерфейсов для следующего поколения систем Windows, то Крис Андерсон будет играть роль Чарльза Петцольда для разработчиков следующего поколения интерфейсов. – Тэд Ньюард, основатель и редактор сайта TheServerSide.NET Отличная книга, которая не только является прекрасным введением в техноло# гию WPF, но и объясняет, как раскрыть огромный потенциал, заложенный в ней. – Скотт Гатри, генеральный директор подразделения разработок, корпорация Майкрософт Технология WPF – совершенно новый подход к созданию графических при# ложений, основанный на принципах, заложенных в Windows Forms и Web. Крис не только замечательно объяснил, как пользоваться новыми возможностями WPF (иллюстрируя текст примерами программ и XAML#кода), но и почему все устроено именно так, а не иначе. Как один их архитекторов, Крис хорошо знаком с внутренним устройством и принципами проектирования WPF, а равно с тон# костями написания программ на базе этой технологии. Это очень важно знать, ес# ли вы собираетесь серьезно применять ее в своих разработках. – Брайан Нойес, главный архитектор, IDesign Inc., региональный директор Microsoft, диплом Microsoft MVP Мне была предоставлена возможность познакомиться с книгой Криса Андер# сона, и я считаю ее исключительно ценным источником, который, не кривя ду# шой, могу рекомендовать. Лично я, сталкиваясь с новой технологией, всегда стремлюсь понять, как она связана с теми, которые призвана заменить. Крис в са# мом начале соотносит WPF с миром пользовательских интерфейсов, написанных на C++ для 32#разрядных версий Windows. Крис демонстрирует глубокое пони# мание принципов WPF, показывает, как эта технология работает, и помогает чи# тателю воспользоваться уже имеющимися у него знаниями, для чего приводит примеры, имитирующие передовые приложения. & Билл Шелдон, главный инженер, компания InterKnowlogy. Посвящается моей жене Меган, которая всегда рядом, поддерживает меня во всех начинаниях и вдохновляет на новые достижения. Крис Андерсон Основы Windows Presentation Foundation Essential Windows Presentation Foundation Chris Anderson Addison Wesley Upper Saddle River, NJ • Boston • Indianapolis • San FranciscoNew York • Toronto • Montreal • London • Mьnich • Paris • MadridCapetown • Sydney • Tokyo • Singapore • Mexico City Основы Windows Presentation Foundation Крис Андерсон Москва УДК 004.4 ББК 32.973.26(cid:6)018.2 А65 К. Андерсон А65 Основы Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, СПб.: БХВ(cid:25)Петербург — 432 с.: ил. ISBN978(cid:25)5(cid:6)94074(cid:6)363(cid:6)7 («ДМК Пресс») ISBN978(cid:25)5(cid:6)9775(cid:6)0265(cid:6)8 («БХВ(cid:6)Петербург») В книге излагаются принципиальные основы новой платформы для построения графических интерфейсов пользователя Windows Presentation Foundation (WPF), которая является составной частью каркаса .NET Framework 3.0 и включена в дистрибутив Windows Vista. Являясь одним из архитекторов системы, автор со знанием дела рассказывает о том, почему были приняты те или иные решения и как их следует применять на практике. Хотя эта книга не ставит себе целью ответить на все практические вопросы разработки приложений, она станет незаменимым спутником серьезного программиста, желающего глубоко разобраться в новой технологии. УДК 004.4 ББК 32.973.26(cid:6)018.2 Original Eglish language edition publihed by Pearson Education, Inc. Copyright © 2007 by Pearson Education, Inc. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978(cid:25)0(cid:25)321(cid:25)37447(cid:25)9 (англ.) © Copyright. Pearson Education, Inc. ISBN 978(cid:25)5(cid:25)94074(cid:25)363(cid:25)3 («ДМК Пресс») © Пе ре во д на рус ский язык, оформ ле ние, ДМК Пресс ISBN 978(cid:25)5(cid:25)9775(cid:25)0265(cid:25)8 («БХВ(cid:25)Петербург») © Издание, БХВ(cid:25)Петербург 7 ООггллааввллееннииее Предисловие................................................................................................................................12 Предисловие................................................................................................................................13 Вступление....................................................................................................................................15 Краткий экскурс в историю графических интерфейсов пользователя...............15 Принципы WPF..........................................................................................................................17 Создать платформу для развитой презентации........................................................17 Создать программируемую платформу........................................................................17 Создать декларативную платформу..............................................................................18 Интегрировать пользовательский интерфейс, документы и мультимедиа.....18 Взять лучшее из Web и лучшее из Windows..............................................................18 Свести программистов и дизайнеров............................................................................18 Что собой представляет эта книга......................................................................................19 Предварительные условия................................................................................................19 Организация...........................................................................................................................20 Благодарности.............................................................................................................................20 Об авторе.......................................................................................................................................21 Глава 1. Введение......................................................................................................................23 WPF как новый ГИП................................................................................................................23 Библиотека User32 в стиле книги Чарльза Петцольда..........................................23 HTML или, по#другому, Web...........................................................................................29 Краткое знакомство с моделью программирования XAML....................................32 Обзор WPF..................................................................................................................................38 С чего начать..........................................................................................................................38 Переходим к разметке.........................................................................................................40 Основы.....................................................................................................................................41 Работа с данными.................................................................................................................47 Развитая интеграция...........................................................................................................50 Будем стильными.................................................................................................................57 Инструменты для построения приложения...............................................................59 Чего мы достигли.......................................................................................................................60 8 Оглавление Глава 2. Приложения................................................................................................................61 Принципы организации приложения.................................................................................61 Масштабируемые приложения........................................................................................61 Стиль Web...............................................................................................................................65 Стиль персональных приложений.................................................................................67 Объект Application....................................................................................................................69 Определение...........................................................................................................................70 Время жизни..........................................................................................................................72 Обработка ошибок...............................................................................................................73 Управление состоянием.....................................................................................................75 Ресурсы и конфигурирование..............................................................................................76 Конфигурация.......................................................................................................................76 Состояние, связанное с содержимым............................................................................79 Состояние#документ............................................................................................................85 Окна.................................................................................................................................................86 Отображение окна................................................................................................................88 Задание размера и положения.........................................................................................91 Объекты Window и Application.......................................................................................92 Пользовательские элементы управления........................................................................93 Навигация и страницы.............................................................................................................96 Передача состояния между страницами....................................................................101 Управление навигацией...................................................................................................106 Управление журналом......................................................................................................107 Функциональная навигация и страничные функции...........................................109 Исполнение приложений в браузере...............................................................................114 HelloBrowser.........................................................................................................................115 Под капотом.........................................................................................................................119 Независимая разметка......................................................................................................121 Чего мы достигли?...................................................................................................................122 Глава 3. Элементы управления..........................................................................................123 Принципиальные основы элементов управления.......................................................123 Модель содержимого..............................................................................................................125 Элемент ContentPresenter.....................................................................................................126 Свойство Items..........................................................................................................................128 Свойства Children и Child.....................................................................................................129 Шаблоны.....................................................................................................................................130 Привязка шаблона...................................................................................................................134 Размышления о шаблонах.....................................................................................................136 Библиотека элементов управления..................................................................................137 Кнопки...................................................................................................................................137 Оглавление 9 Списки....................................................................................................................................139 Меню и панели инструментов.......................................................................................146 Контейнеры..........................................................................................................................150 Средства просмотра документов..................................................................................164 Строительные блоки.........................................................................................................167 Чего мы достигли?...................................................................................................................176 Глава 4. Размещение..............................................................................................................177 Принципы размещения.........................................................................................................177 Контракт о размещении...................................................................................................178 Согласованное размещение............................................................................................180 Отсутствие встроенного размещения.........................................................................187 Библиотека менеджеров размещения............................................................................188 Панель Canvas.....................................................................................................................188 Панель StackPanel..............................................................................................................191 Панель DockPanel..............................................................................................................192 Панель WrapPanel.............................................................................................................195 Панель UniformGrid..........................................................................................................196 Панель Grid................................................................................................................................197 Концептуальная модель элемента Grid......................................................................198 Организация размещения в элементе Grid...............................................................203 Элемент GridSplitter.........................................................................................................206 Реализация нестандартного размещения......................................................................208 Чего мы достигли?...................................................................................................................214 Глава 5. Визуальные элементы..........................................................................................215 Двумерная графика................................................................................................................215 Принципы двумерной графики.....................................................................................216 Геометрические примитивы...........................................................................................219 Цвет.........................................................................................................................................222 Кисти......................................................................................................................................224 Перья.......................................................................................................................................231 Рисунки..................................................................................................................................235 Фигуры..................................................................................................................................236 Изображения........................................................................................................................237 Прозрачность.......................................................................................................................244 Свойство BitmapEffects....................................................................................................247 Трехмерная графика..............................................................................................................248 Программа «Здравствуй, мир» в трехмерной ипостаси.......................................249 Принципы трехмерной графики...................................................................................252 Документы и текст..................................................................................................................260 «Здравствуй, мир» – текстовый вариант...................................................................260 10 Оглавление Шрифты.................................................................................................................................265 Размещение текста.............................................................................................................266 Дополнительные типографические средства...........................................................273 Анимация....................................................................................................................................274 Анимация как new Timer.................................................................................................274 Время и временная шкала...............................................................................................282 Определение анимации....................................................................................................283 Интеграция анимации......................................................................................................286 Мультимедиа.............................................................................................................................289 Аудио......................................................................................................................................290 Видео.......................................................................................................................................292 Чего мы достигли?...................................................................................................................294 Глава 6. Данные........................................................................................................................295 Принципы работы с данными.............................................................................................295 Модель данных в .NET.....................................................................................................295 Всепроникающее связывание........................................................................................296 Преобразование данных..................................................................................................297 Ресурсы.......................................................................................................................................297 Основные принципы связывания......................................................................................302 Привязка к объектам CLR...................................................................................................308 Редактирование...................................................................................................................311 Привязка к XML......................................................................................................................316 Знакомство с XPath...........................................................................................................316 Привязка к XML................................................................................................................317 Шаблоны данных.....................................................................................................................321 Выбор шаблона...................................................................................................................324 Более сложное связывание.................................................................................................326 Иерархическое связывание............................................................................................326 Представления наборов...................................................................................................331 Отображение, управляемое данными.............................................................................338 Чего мы достигли?...................................................................................................................344 Глава 7. Действия....................................................................................................................345 Принципиальные основы действий..................................................................................345 Композиция элементов....................................................................................................345 Слабая связь.........................................................................................................................346 Декларативные действия.................................................................................................348 События.......................................................................................................................................348 Команды......................................................................................................................................352