Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Silverlight 2

Покупка
Артикул: 615026.01.99
Silverlight - новая революционная технология разработки пользовательских веб-интерфейсов, созданная корпорацией Майкрософт на основе Windows Presentation Foundation (WPF). В приложениях Silverlight используется язык разметки XAML при поддержке таких инструментов, как Expression Design и Expression Blend. Это дает возможность реализовывать поразительные эффекты (градиенты, композиции, анимации). Помимо богатого набора элементов управления, Silverlight 2 позволяет использовать не только язык JavaScript, но также C# и VB. Silverlight предоставляет вам всю мощь .NET на различных платформах (Internet Eхplorer и Firefox для Windows, Firefox и Safari для Macintosh и Firefox для Linux). Автор на многочисленных примерах помогает очень быстро овладеть основами этой современной технологии.
Буньон, Л. Silverlight 2 [Электронный ресурс] / Лоран Буньон; пер. с англ. А. А. Слинкина. - Москва : ДМК Пресс, 2009. - 528 с.: ил. - ISBN 978-5-94074-550-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/408342 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Лоран Буньон

SILVERLIGHT 2

Laurent Bugnion

SILVERLIGHT 2

UNLEASHED

Лоран Буньон

SILVERLIGHT 2

Москва, 2009

Перевод с английского Слинкина А. А.

УДК
004.4

ББК
32.973.26-018.2
Б91

Б91
Лоран Буньон

Silverlight 2: Пер. с англ. Слинкина А. А. – М.: ДМК Пресс, 2009. – 528 с.: ил.

ISBN 978-5-94074-550-1

Silverlight – новая революционная технология разработки пользовательских вебинтерфейсов, созданная корпорацией Майкрософт на основе Windows Presentation Foundation (WPF). В приложениях Silverlight используется
язык разметки XAML при поддержке таких инструментов, как Expression
Design и Expression Blend. Это дает возможность реализовывать поразительные эффекты  (градиенты, композиции, анимации). Помимо богатого
набора элементов управления, Silverlight 2 позволяет использовать не только язык JavaScript, но также C# и VB.

Silverlight предоставляет вам всю мощь .NET на различных платформах

(Internet Eхplorer и Firefox для Windows, Firefox и Safari для Macintosh и
Firefox для Linux). Автор на многочисленных примерах помогает очень быстро овладеть основами этой современной технологии.

  УДК 004.4

ББК 32.973.26-018.2

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность

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

ISBN 978-0-672-33014-8 (àíãë.)
Copyright © by Pearson Education, Inc., 2009

ISBN 978-5-94074-550-1
© Ïåðåâîä íà ðóññêèé ÿçûê, îôîðìëåíèå, èçäàíèå,

ÄÌÊ Ïðåññ, 2009

Содержание

Предисловие .......................................................................................... 19

Об авторе .................................................................................................. 20

Посвящение ............................................................................................ 21

Благодарности ....................................................................................... 22

В помощь читателям .................................................................................. 23

Введение .................................................................................................. 24

О примерах кода ........................................................................................ 25
Старше на год ............................................................................................ 25

Глава 1. Введение в Silverlight ........................................................ 26

Истоки технологии Silverlight ...................................................................... 27

Автоматизация вебстраниц с помощью языка JavaScript..................... 27
Каскадные таблицы стилей ................................................................... 28
Переход к DHTML .................................................................................. 29
AJAX – более развитый способ коммуникации ...................................... 29

Использование сторонних надстроек ........................................................ 30

Javaапплеты ........................................................................................ 30
Элементы управления ActiveX ............................................................... 31
Flashприложения ................................................................................. 31

Работа на разных платформах ................................................................... 32
Вебприложения и безопасность ............................................................... 33
Знакомство с Silverlight.net ........................................................................ 34
Что необходимо для запуска Silverlight? ..................................................... 34
Автоматическое обновление среды исполнения ........................................ 35
Познакомимся с демонстрационными приложениями Silverlight ............... 36

Поиграем в шахматы против Silverlight .................................................. 36
Планирование путешествия с помощью приложения Airline .................. 37
Панорамирование хардроккафе......................................................... 38
Где найти дополнительные демонстрации ............................................ 39

Что необходимо для разработки приложений Silverlight? ........................... 39

Expression Studio ................................................................................... 40
Visual Studio 2008 .................................................................................. 40

Содержание
Содержание
Содержание
Содержание
Содержание

Чтение документации ................................................................................ 41

Просмотр онлайновой документации.................................................... 41
Поиск дополнительной документации................................................... 41
Учебные пособия .................................................................................. 42

Заглянем в будущее Silverlight ................................................................... 42

Считать ли ASP.NET/HTML/JavaScript покойниками? ............................. 43

Резюме ...................................................................................................... 43

Глава 2. Знакомство с XAML ............................................................ 44

Использование XML для представления данных ........................................ 44
XML и пользовательские интерфейсы ........................................................ 45
Пространства имен в XML .......................................................................... 46
Определение дополнительных пространств имен ..................................... 47
Создание элемента Canvas с дочерними элементами ............................... 48
Присоединенные свойства: Canvas.Left и Canvas.Top ................................ 49
Документирование разметки с помощью XMLкомментариев ................... 49
Тестирование XAMLразметки ................................................................... 50

Использование SilverlightPad ................................................................ 50
Использование KaXaml ......................................................................... 51

Задание свойств в XAML ............................................................................ 52
Изменение кисти ....................................................................................... 54
Описание сцен в XAML ............................................................................... 55
Меньше вводить, экономить место ............................................................ 57
Резюме ...................................................................................................... 57

Глава 3. Трансформации и анимации в XAML ......................... 59

Трансформация визуальных элементов ..................................................... 59
Типы трансформаций................................................................................. 61

Трансформация RotateTransform ........................................................... 61
Трансформация TranslateTransform ....................................................... 61
Трансформация ScaleTransform ............................................................ 62
Трансформация SkewTransform............................................................. 63
Трансформация MatrixTransform ........................................................... 64

Композиция трансформаций ..................................................................... 65
Создание простой анимации ..................................................................... 66
Составные элементы анимации ................................................................. 68
Добавление анимации масштабированием ............................................... 69
Использование других типов анимаций ..................................................... 70

Навигация по пути к свойству................................................................ 71

Развертывание сцены на вебстранице ..................................................... 72
Резюме ...................................................................................................... 72

Глава 4. Самовыражение с помощью Expression Blend ..... 73

Коротко об Expression Studio ...................................................................... 73
Установка Expression Blend ........................................................................ 73

Содержание
Содержание
Содержание
Содержание
Содержание

Запуск Expression Blend ............................................................................. 74
Опции настройки ....................................................................................... 74
Создание нового проекта .......................................................................... 76
Панели ....................................................................................................... 76
Знакомство с файлами .............................................................................. 77
Исполнение в веббраузере....................................................................... 78
Работа с формами ..................................................................................... 79
Панель свойств .......................................................................................... 80
Элемент Color Picker .................................................................................. 80

Создание кисти LinearGradienBrush ...................................................... 81
Изменение вектора градиента .............................................................. 82
Создание радиальноградиентной кисти .............................................. 82

Создание эффекта трехмерной границы с помощью
радиальноградиентной кисти ................................................................... 83
Восстановление подразумеваемых по умолчанию значений свойств ........ 83
Составление иерархии элементов ............................................................. 84
Резюме ...................................................................................................... 85

Глава 5. Мультимедиа ........................................................................ 86

Смешивание цветов................................................................................... 86

Почему FF? ............................................................................................ 87

Канал прозрачности................................................................................... 88
Свойство Opacity ....................................................................................... 89
Векторная графика .................................................................................... 90
Добавление на сцену мультимедийных элементов .................................... 91

Создание макета приложения ............................................................... 92
Добавление картинок............................................................................ 93
Добавление видео ................................................................................ 94
Тестирование результата в браузере .................................................... 95
Уточнение макета.................................................................................. 95
Добавление еще одной картинки .......................................................... 97

Управление звуком и видео ....................................................................... 97

Отключение автоматического воспроизведения................................... 97
Зацикливание ....................................................................................... 98
Приостановка и возобновление видео .................................................. 99
Изменение формы курсора ................................................................. 100

Другие свойства ...................................................................................... 100

Заполнение пространства .................................................................. 100
Как сделать изображение незаметным при перемещении мыши ........ 101

Использование мультимедийных элементов для вывода ......................... 101

Вывод с помощью видео ..................................................................... 101
Применение невидимого видеоролика для рисования текста ............. 102
Вывод с помощью изображений ......................................................... 102

Трансформации мультимедийных элементов .......................................... 103
Использование мультимедийных элементов из веб ................................. 103
Резюме .................................................................................................... 105

Содержание
Содержание
Содержание
Содержание
Содержание

Глава 6. Еще об Expression Blend ................................................ 106

Создание трансформаций ....................................................................... 106
Создание маски прозрачности OpacityMask ............................................ 107
Контуры ................................................................................................... 108

Создание контура с нуля ..................................................................... 108
Использование сплайнов для модификации контура .......................... 109
Комбинирование форм ....................................................................... 109

Обтравочные контуры .............................................................................. 110

Контуры в XAML ................................................................................... 111

Группировка элементов управления ........................................................ 112

Группировка элементов ...................................................................... 112
Другие панели..................................................................................... 113
Прокрутка миниатюр ........................................................................... 113

Пользовательские элементы управления ................................................ 114

Создание пользовательского элемента управления ........................... 115
Применение пользовательского элемента управления....................... 116

Продолжаем работу над галереей миниатюр ........................................... 117

Добавление фрейма отображения ...................................................... 117
Добавление отражений под миниатюрами ......................................... 118
Отражение видео ................................................................................ 120
И последнее ........................................................................................ 120

Резюме .................................................................................................... 120

Глава 7. Развертывание на вебстранице .............................. 121

Создание тестовой страницы .................................................................. 121
Тег object.................................................................................................. 122

Атрибуты ............................................................................................. 122
Параметры .......................................................................................... 123
Модификация атрибутов и параметров .............................................. 124
Развертывание с помощью JavaScript ................................................. 128

Определение версии Silverlight ................................................................ 128
Интеграция Silverlight в существующую вебстраницу ............................. 128

Изучение оригинального кода ............................................................. 129
Получение XAPфайла ......................................................................... 130
Модификация разметки ...................................................................... 130
Тестирование результата .................................................................... 131
Ссылка на XAPфайл на другом вебсервере ...................................... 132

Получение места на вебсервере............................................................. 132

Требования к вебсерверу .................................................................. 133
Поиск провайдера............................................................................... 134

Знакомство с FTP ..................................................................................... 134

Настройка FTPклиента ....................................................................... 135
Соединение с сервером ...................................................................... 136

Копирование приложения Silverlight ........................................................ 137

Тестирование результата .................................................................... 139

Резюме .................................................................................................... 139

Содержание
Содержание
Содержание
Содержание
Содержание

Глава 8. Программирование Silverlight с помощью
JavaScript ............................................................................................... 140

Основы языка .......................................................................................... 140

Комментарии ...................................................................................... 141
Точка с запятой ................................................................................... 141
Чувствительность к регистру .............................................................. 141
Переменные ........................................................................................ 142
Функции .............................................................................................. 142
Прототипы, this, new............................................................................ 142
Типы .................................................................................................... 143
Встроенные объекты и библиотеки ..................................................... 143
Функция alert....................................................................................... 144
Значение undefined ............................................................................. 144
Значение null ....................................................................................... 145
Обработка событий ............................................................................. 146

Знакомство с концепцией объектов ......................................................... 147

Взаимодействие с другими экземплярами ......................................... 147

Глобальный объект ................................................................................... 148
Литеральная нотация JSON ..................................................................... 149

Создание объектов с помощью JSON ................................................. 149

Статические члены .................................................................................. 150
Загрузка сценариев на вебстраницу ...................................................... 151
Что такое контекст? ................................................................................. 152
Интеграция Silverlight в существующую вебстраницу с помощью
JavaScript ................................................................................................. 153

Где найти файл Silverlight.js ................................................................. 154
Использование файла Silverlight.js ...................................................... 154
Определение версии Silverlight ........................................................... 158
Определение наличия JavaScript ........................................................ 158
Модификация вебстраницы во время выполнения ............................ 159

Отладка ................................................................................................... 159
Резюме .................................................................................................... 159

Глава 9. Основы .NET ........................................................................ 161

История .NET ........................................................................................... 161

Версии, версии, версии… ................................................................... 161
Управляемый и неуправляемый код .................................................... 163

Загрузка и установка Visual Studio 2008 ................................................... 163
Создание приложения Silverlight 2 в Visual Studio 2008 ............................. 164

Сборка и запуск приложения .............................................................. 165
Ошибки компиляции ........................................................................... 165
Знакомство с файлами ....................................................................... 166
Запуск (пустого) приложения .............................................................. 168

Intellisense ................................................................................................ 169
Программирование на C#, основные конструкции .................................. 170

10
10
10
10
Содержание
Содержание
Содержание
Содержание
Содержание

Типы .................................................................................................... 171
Целые типы ......................................................................................... 171
Типы с плавающей точкой ................................................................... 171
Прочие типы........................................................................................ 172
Преобразование типов ....................................................................... 172
Предложение if then else ..................................................................... 173
Цикл for ............................................................................................... 174
Цикл foreach ........................................................................................ 175
Цикл while............................................................................................ 175
Цикл do… while .................................................................................... 176
Предложение switch…case .................................................................. 177
Операторы .......................................................................................... 178

Резюме .................................................................................................... 180

Глава 10. Продолжаем изучение .NET...................................... 181

Программирование на C# с объектами .................................................... 181

Разбиение задачи на меньшие подзадачи .......................................... 181
Пространства имен и директива using ................................................ 182
Добавление директивы using .............................................................. 182
Видимость .......................................................................................... 183
Свойства ............................................................................................. 183
Наследование ..................................................................................... 185

Добавление интерактивности в приложение Thumbnails.......................... 186

Добавление обработчиков событий .................................................... 186
Отображение увеличенного мультимедийного элемента .................... 187

Перегрузка методов ................................................................................ 190
Возбуждение событий и использование делегатов.................................. 191

Создание объекта EventArgs ............................................................... 192
Объявление события........................................................................... 192
Подписка на событие .......................................................................... 194

Сохранение данных на стороне клиента .................................................. 194

Ограничения безопасности, налагаемые на изолированное хранилище .. 194
Создание объектов ............................................................................. 195
Чтение из изолированного хранилища ................................................ 198
Запись в изолированное хранилище ................................................... 199
Обновление пользовательского интерфейса ...................................... 199
Совместимость с разными браузерами .............................................. 200

Резюме .................................................................................................... 201

Глава 11. И снова анимация .......................................................... 202

Анимирование элементов в Blend ............................................................ 202

Тестирование приложения .................................................................. 204
Изменение свойств анимации ............................................................ 205
Изменение темпа анимации ............................................................... 206

Синхронизация анимаций ........................................................................ 206

11
11
11
11
Содержание
Содержание
Содержание
Содержание
Содержание

Об элементах анимации ...................................................................... 207

Обращение раскадровки ......................................................................... 208
Анимация PointAnimation .......................................................................... 208
Запуск и останов анимации ..................................................................... 210
Продолжаем работу над галереей миниатюр ........................................... 211

Составляем план ................................................................................. 211
Готовим подмостки ............................................................................. 212
Изготавливаем заготовку анимации ................................................... 213
Изменение темпа анимации параллельным переносом ...................... 214
Запуск анимации из программы ......................................................... 215
Программное создание анимации «затухания» ................................... 219

Резюме .................................................................................................... 221

Глава 12. Кодирование видео в Expression Encoder .......... 222

Прежде чем начать… ............................................................................... 222
Введение в Expression Encoder ................................................................ 222
Параметры............................................................................................... 223
Назначение различных панелей ............................................................... 224
Импорт видео .......................................................................................... 224
Сохранение изменений............................................................................ 226
Задание типа выходных данных ............................................................... 226

Изменение размера и пропорций видео ............................................. 227
Дополнительная обработка и параметры кодека ................................ 229
Добавление заголовка и хвостовика ................................................... 229

Тестирование перед началом кодирования ............................................. 230
Задание метаданных ............................................................................... 231

Добавление собственных метаданных ................................................ 232
Создание глав ..................................................................................... 232
Создание надписей............................................................................. 233

Кодирование видео для Silverlight ............................................................ 234
Проверка результата ............................................................................... 235

Полноэкранное воспроизведение видео............................................. 236

Дополнительные параметры .................................................................... 236
Резюме .................................................................................................... 237

Глава 13. Еще о видео ...................................................................... 238

Почему именно потоковое видео? ........................................................... 238
Публикация на собственном сайте .......................................................... 239

Копирование файлов .......................................................................... 239

Наложение изображения ......................................................................... 240

Добавление картинки или видео ......................................................... 240
Задание дополнительных свойств ...................................................... 241
Наложение XAMLразметки ................................................................. 242

Выбор плеера пользователем .................................................................. 243

Копирование файлов .......................................................................... 243

12
12
12
12
Содержание
Содержание
Содержание
Содержание
Содержание

Модификация файлов ......................................................................... 244
Создание видео .................................................................................. 246
Как это работает? ............................................................................... 247

Публикация на потоковых серверах Microsoft Silverlight ........................... 248

Регистрация........................................................................................ 248
Установка и конфигурирование надстройки, публикация ................... 249
Тестирование результата .................................................................... 249

Включение приложения в существующую вебстраницу .......................... 250

Использование iframe ......................................................................... 251
Использование JavaScript и Live Control .............................................. 251

Запуск команд сценария .......................................................................... 251
Модификация шаблона плеера в Blend .................................................... 254

Добавление кнопки Full Screen ............................................................ 254
Обработка события в сценарии........................................................... 255
Тестирование результата .................................................................... 256

Резюме .................................................................................................... 256

Глава 14. Взаимодействие .NET и JavaScript ....................... 257

Доступ к .NET из JavaScript ...................................................................... 257

Атрибут ScriptableMember ................................................................... 257
Регистрация объекта .......................................................................... 258

Обработка событий .NET в JavaScript....................................................... 258

Подготовка класса, доступного из сценария ....................................... 258
Возбуждение события ......................................................................... 260
Подписка на событие в JavaScriptсценарии ....................................... 260
Тестирование программы ................................................................... 262

Вызов JavaScriptметодов из .NET ........................................................... 262
Вызов методов .NET из JavaScript ............................................................ 264
Добавление диалога регистрации в приложение Thumbnails ................... 264

Развитие класса User .......................................................................... 264
Дополнительные свойства .................................................................. 265
Учет нескольких пользователей .......................................................... 268
Модификация класса Page.................................................................. 271
Добавление ссылки Login .................................................................... 273
Добавление вебпроекта .................................................................... 274
Проверка мультимедийных файлов во время сборки .......................... 275
Добавление HTMLдиалога регистрации ............................................ 276
Комбинирование приложения Silverlight с HTML ................................. 277
Перехват событий .NET ....................................................................... 277
Связывание сценариев ....................................................................... 279
Обработка HTMLсобытий................................................................... 280

Резюме .................................................................................................... 280

Глава 15. Элементы управления в Silverlight ........................ 281

Знакомство с иерархией классов............................................................. 281

Класс Object ........................................................................................ 282

13
13
13
13
Содержание
Содержание
Содержание
Содержание
Содержание

Класс DependencyObject ..................................................................... 282
Класс DependencyProperty .................................................................. 282
Класс UIElement .................................................................................. 282
Класс FrameworkElement ..................................................................... 283

 XAML или застраничный код? .................................................................. 283
Верстка с помощью панелей .................................................................... 285

Композиция элементов ....................................................................... 286
Панель Canvas ..................................................................................... 286
Буксировка элемента по холсту .......................................................... 287
Рядное расположение элементов на панели StackPanel ..................... 289
Использование StackPanel для потоковой верстки ............................. 290
Использование панели Grid для выравнивания элементов ................. 290
Задание минимального и максимального размеров ........................... 292
Добавление элементов в сетку ........................................................... 293
Добавление элементов в застраничном коде...................................... 294

Прокрутка и обрамление ......................................................................... 294

Использование ScrollViewer для прокрутки больших областей ............ 294
Обрамление элемента ........................................................................ 296

Всплывающие элементы .......................................................................... 297
Рисование форм ...................................................................................... 298

Свойство Data ..................................................................................... 298

Резюме .................................................................................................... 300

Глава 16. Еще об элементах Silverlight .................................... 301

Класс Control ............................................................................................ 301

Активация и деактивация элементов управления ............................... 302
Применение стилей и шаблонов ......................................................... 302
О шрифтах .......................................................................................... 302

Основные элементы управления.............................................................. 303

Ввод и вывод текста ............................................................................ 303
Класс ButtonBase ................................................................................ 304
Прокрутка и буксировка ...................................................................... 306
Представление мультимедиа .............................................................. 309

Выбор даты с помощью элементов Calendar и DatePicker ........................ 310

Элемент Calendar ................................................................................ 310
Элемент DatePicker ............................................................................. 311
Обработка ошибок .............................................................................. 312

Рукописный ввод ..................................................................................... 312
Разработка простого приложения для рисования .................................... 313

Подготовка сцены ............................................................................... 313
Обработка событий ............................................................................. 315
Запуск приложения ............................................................................. 319

Представление данных с помощью элементов ItemsControl..................... 319

Элемент TabControl ............................................................................. 320

Подробное рассматривание изображений .............................................. 321

14
14
14
14
Содержание
Содержание
Содержание
Содержание
Содержание

Как это работает? ............................................................................... 321
Создание пирамиды изображений для DeepZoom .............................. 321
Элемент управления MultiScaleImage ................................................. 323

Резюме .................................................................................................... 324

Глава 17. Ресурсы, стили и шаблоны ....................................... 325

Сохранение объектов в наборах .............................................................. 325

Реализация интерфейсов ................................................................... 326

Использование словарей ресурсов в Silverlight ........................................ 327

Хранение ресурсов ............................................................................. 327
Использование ресурсов в застраничном коде ................................... 328
А зачем такие сложности? ................................................................... 328
Использование ресурсов в XAML ........................................................ 328
Хранение ресурсов в файле App.xaml ................................................. 330

Стилизация элемента управления ........................................................... 331

Создание объекта Style ....................................................................... 331
Использование объекта Style .............................................................. 331
Приоритеты установщиков свойств .................................................... 332
Создание стилей в Blend ..................................................................... 333
Редактирование стиля в Blend ............................................................ 334

Стилизация приложения Thumbnails ........................................................ 334

Стилизация текстовых блоков ............................................................. 334
Стилизация миниатюр ........................................................................ 335
Перемещение ресурсов в Blend .......................................................... 336

Внедрение шрифтов в приложение.......................................................... 337

Внедрение шрифта в Blend ................................................................. 337
Внедрение шрифта в Visual Studio ....................................................... 338

Шаблоны.................................................................................................. 339

Но ведь мы видим элемент управления! ............................................. 339
Редактирование шаблона ................................................................... 340
Модификация состояний .................................................................... 341
Привязка шаблона к элементу управления ......................................... 342
Представление содержимого ............................................................. 343

Резюме .................................................................................................... 344

Глава 18. Привязка к данным и элементы,
допускающие связывание ............................................................. 345

Что такое привязка к данным? ................................................................. 345

Создание объекта данных ................................................................... 345
Создание объекта данных в ресурсах ................................................. 347
Запись в объект данных с помощью механизма привязки ................... 347
Получение уведомлений, поиск ошибок связывания........................... 348
Конвертация значений при связывании .............................................. 349

Более тесное знакомство с классом Binding ............................................ 350
Задание контекста данных ....................................................................... 351

15
15
15
15
Содержание
Содержание
Содержание
Содержание
Содержание

Использование элементов управления, допускающих связывание ......... 352

Элемент управления ListBox ............................................................... 353
Элемент DataGrid ................................................................................ 360

Использование источников XMLданных .................................................. 366
Резюме .................................................................................................... 366

Глава 19. Создание пользовательских
и нестандартных элементов управления ............................... 367

Создание элемента управления для просмотра миниатюр ...................... 367

Создание объектов данных ................................................................. 368
Элемент ThumbnailsViewerControl ....................................................... 371
Общение с внешним миром ................................................................ 372

Создание объектов и проектирование шаблона данных .......................... 375

Создание экземпляра класса Media в виде XAML ................................ 375
Проектирование шаблона данных ....................................................... 378
Удаление тестового источника данных ................................................ 379
Перемещение мультимедийных файлов ............................................. 379
Подключение ThumbnailsViewer к реальным данным ........................... 381
Возбуждение и обработка события SelectionChanged ......................... 381

Создание нестандартного элемента управления MediaInfoDisplay .......... 383

Вырабатываем план ............................................................................ 383
Создание «оболочки» .......................................................................... 384
Обработка состояний .......................................................................... 387
Обработка частей ............................................................................... 388
Применение шаблона ......................................................................... 390

Резюме .................................................................................................... 391

Глава 20. Еще один шаг вглубь Silverlight 2 ............................ 392

Создание шаблона по умолчанию для элемента управления
MediaInfoDisplay ....................................................................................... 392
Использование элемента управления MediaInfoDisplay ........................... 394

Добавление тестовых данных ............................................................. 394
Помещение элемента управления на сцену ........................................ 394
Создание шаблона .............................................................................. 395
Создание переходов ........................................................................... 396
Удаление тестовых данных .................................................................. 397
Связывание элементов между собой .................................................. 397
Копнем глубже .................................................................................... 398

Прокрутка объектов ................................................................................. 399
Создание нового шаблона для RepeatButton............................................ 401

Создание шаблона .............................................................................. 401
Изменение переходов ......................................................................... 402
Привязка шаблона .............................................................................. 403
Тестирование новой кнопки ................................................................ 403
Стилизация кнопки RepeatButton ........................................................ 403

16
16
16
16
Содержание
Содержание
Содержание
Содержание
Содержание

Стилизация второй кнопки .................................................................. 404

Перенос классов во внешнюю сборку и рефакторинг .............................. 405

Создание библиотеки классов Silverlight ............................................. 405
Использование внешней библиотеки классов..................................... 408

Несколько слов об объекте Application ..................................................... 410
Универсальные типы ................................................................................ 411
Резюме .................................................................................................... 412

Глава 21. Дальше по пути Silverlight 2 ...................................... 413

Регистрация нескольких обработчиков событий в JavaScript ................... 413
Поиск элементов Silverlight из JavaScriptкода ......................................... 414
Доступ к HTMLстранице из .NET ............................................................. 416
Обмен данными между .NET и JavaScript ................................................. 418

Попытка преобразования.................................................................... 418
Обмен данными в стандартных форматах ........................................... 420
Преобразование в тип ScriptObject ..................................................... 421

Передача параметров инициализации .................................................... 424

Задание параметров инициализации ................................................. 424
Получение параметров инициализации .............................................. 425

Присоединение .NETобработчиков к событиям HTMLэлементов .......... 426

Использование класса HtmlEventArgs ................................................. 427

Публикация непосредственно из Visual Studio ......................................... 428
Отладка приложения Silverlight ................................................................ 429

Сравнение отладочной и выпускной версий........................................ 429
Создание выпускной версии ............................................................... 429
Пошаговое выполнение программы .................................................... 430
Инспекция и модификация переменных ............................................. 432
Отладка в контексте проекта вебсайта .............................................. 433
Отладка JavaScript .............................................................................. 434
Отладка уже запущенных приложений ................................................ 434
Отладка приложений Silverlight на компьютере Macintosh ................... 435

Резюме .................................................................................................... 436

Глава 22. Соединение с веб ........................................................... 437

Создание и загрузка XMLфайла .............................................................. 437

Вынесение информации о мультимедийных файлах из приложения ... 437
Отображение и сокрытие заставки ..................................................... 438
Загрузка XMLфайла с информацией о мультимедийных файлах ....... 439
Отправка запроса ............................................................................... 440
Получение ответа ................................................................................ 441
Чтение XMLфайла с помощью технологии LINQ ................................. 442
Разбор перечислений ......................................................................... 445
Отправка запроса ............................................................................... 445
Обработка результатов ....................................................................... 446
Тестирование приложения .................................................................. 448

17
17
17
17
Содержание
Содержание
Содержание
Содержание
Содержание

Загрузка zipфайла и индикация хода загрузки ....................................... 448

Создание zipфайла ............................................................................ 448
Расширение класса MediaEx для хранения потока .............................. 449
Загрузка zipфайла ............................................................................. 449
Чтение файлов из архива .................................................................... 451
Обновление пользовательского интерфейса ...................................... 453

Отправка запросов WCFслужбам ............................................................ 455

Перемещение классов User и DataFile на сервер ................................ 455
Адаптация класса DataFile к работе на сервере .................................. 456
Создание WCFслужбы ........................................................................ 457
Реализация службы............................................................................. 458
Модификация клиентского приложения.............................................. 460

Еще о сетевых взаимодействиях.............................................................. 463
Резюме .................................................................................................... 463

Глава 23. Междоменные запросы
и обработка исключений ................................................................ 464

Междоменные запросы ........................................................................... 464

Использование файла междоменной политики Flash .......................... 465
Использование файла междоменной политики Silverlight ................... 465
Ограничения ....................................................................................... 466

Взаимодействие со сторонними службами.............................................. 468

Принятие условий обслуживания Flickr ............................................... 468
Получение ключа для работы с Flickr API ............................................. 468
Подготовка и отправка запроса .......................................................... 469
Обработка ответа................................................................................ 472
Модификация пользовательского интерфейса ................................... 478

Отправка POSTзапросов ........................................................................ 479
Возбуждение и перехват исключений ...................................................... 480

Распространение исключений ............................................................ 481
Свойства класса Exception .................................................................. 483
Перехват необработанных исключений ............................................... 484
Создание собственных типов исключений .......................................... 485
Обработка ошибок Silverlight в JavaScript ............................................ 486

Резюме .................................................................................................... 487

Глава 24. Silverlight: путешествие продолжается .............. 488

Обновление ссылки на службу ................................................................. 488
Принудительное завершение процесса ................................................... 489

Принудительное завершение процесса в отладочном режиме ........... 490

О защите своей интеллектуальной собственности .................................. 491

Защитить любой ценой ....................................................................... 491

Привязка в особых ситуациях .................................................................. 491

Задание привязки в Blend ................................................................... 492
Обработка ошибок контроля ............................................................... 493

18
18
18
18
Содержание
Содержание
Содержание
Содержание
Содержание

Привязка и свойства Converter, ConverterParameter, ConverterCulture.... 494
Привязка к объекту, а не к свойству .................................................... 495

Использование ASP.NETэлементов управления Silverlight и MediaPlayer .. 496

ASP.NETэлемент Silverlight ................................................................. 497
ASP.NETэлемент MediaPlayer ............................................................. 498

Создание автономных тестов для Silverlight ............................................. 500

Установка каркаса автономного тестирования для Silverlight .............. 501
Создание нового тестового приложения Silverlight ............................. 501
Создание метода расширения TryFindResource .................................. 503
Написание правильного класса .......................................................... 504
Реализация рекурсии.......................................................................... 505
Еще об автономных тестах .................................................................. 507
Повторное использование автономных тестов Майкрософт ............... 507

Изготовление и покупка XAMLресурсов .................................................. 508

Использование Expression Design ....................................................... 508
Поиск XAMLресурсов в Сети .............................................................. 509
Конвертация других форматов в XAML ................................................ 510

Сторонние элементы управления и библиотеки ...................................... 511
Блоги, посвященные Silverlight ................................................................. 511
Резюме .................................................................................................... 512

Алфавитный указатель .................................................................... 513

Предисловие

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

Неудивительно, что Silverlight 2 учитывает эти тенденции.
Silverlight 2 – это технология разработки вебприложений. Среда исполнения

Silverlight меньше средней песенки Бритни Спирс, при этом она устанавливается
в любой браузер (Internet Explorer, Firefox, Safari и др.) и на любой платформе (Windows, Mac, Linux). Приложения для Silverlight компактны, работают быстро и никак
не сказываются на клиентском компьютере. Их не надо инсталлировать и деинсталлировать, к тому же все они исполняются в «песочнице» и потому гарантированно
не могут причинить вред машине пользователя или другим приложениям.

Пользователю работать с Silverlight 2 очень удобно. Объясняется это конвергенцией видео, векторной графики и развитой инфраструктуры разработки. Имея
под капотом Silverlight всю мощь среды CLR, программист может полнее выразить свои идеи. Языки C# и VB обеспечивают высокую продуктивность уже сегодня без изучения новых языков и инструментов разработки. А язык разметки
XAML позволяет дизайнеру воспользоваться программами семейства Expression
и другими подобными инструментами для создания интересных переходов и анимаций, придающих приложениям внешнюю привлекательность. В совокупности
же это позволяет пользователям приложений Silverlight работать с большим удобством и быстрее решать свои задачи.

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

С нетерпением буду ждать приложений, которые вы напишете.

Брэд Адамс

менеджер по продуктам

корпорация Майкрософт

http://blogs.msdn.com/brada

Сентябрь 2008

Об авторе

Лоран Буньон – старший разработчик и архитектор, проживает в Швейцарии
с женой Чи Мей и двумя дочерьми – Алисой (родилась в 2001 г.) и Летицией
(2004 г.). Получив специальность инженераэлектронщика в Инженерной школе
Ивердона (Швейцария), он скоро заинтересовался программным обеспечением и
в 1999 г. защитил диплом в области разработки ПО в Инженерной школе Рапперсвиля (Швейцария).

В настоящее время его интересуют прежде всего WPF, Silverlight и другие

технологии, вошедшие в состав .NET 3.5. Последние три года он занимался их
внедрением в компании Siemens и обучением ее сотрудников. Ранее он писал
встраиваемые программы на C/C++, а потом перешел на создание программ для
настольных компьютеров на языках Java, JavaScript и, наконец, .NET (WinForms
и ASP.NET). Посвятив свыше 12 лет разработке различных программных продуктов в компании Siemens, в 1998 г. Лоран перешел на работу в компанию IdentityMine – один из лидеров в области проектирования и разработки ПО на платформах WPF и Silverlight.

В свободное от работы время Лоран также проявлял завидную активность,

разрабатывая сайты и вебприложения с использованием HTML, JavaScript, CSS,
ASP, а теперь и ASP.NET. Он привнес немало ценного в различные сообщества
разработчиков, сначала в сетевых конференциях по JavaScript, а позже в форумах
Microsoft, посвященных ASP.NET, C#, WPF и Silverlight. Он регулярно оставляет
заметки в своем блоге по адресу http://blog.galasoft.ch, публикует статьи, прототипы приложений и демонстрационные примеры, относящиеся к этим технологиям.

В 2007 г. Лоран сдал экзамен на звание «исключительно ценного профессионала» (MVP) Microsoft по ASP.NET, а в 2008 г. – по разработке клиентских приложений. Также в 2008 г. он получил звание «сертифицированного технического
специалиста Microsoft» (MCTS) по Windows Presentation Foundation.

Посвящение

Как бы я стал писать эту книгу без твоей безграничной,

терпеливой поддержки, Чи Мей? С этим очередным безумным проектом

я никогда не справился бы без твоего одобрения и помощи.

Только благодаря неиссякаемой энергии, с которой ты ограждала меня

от мелких жизненных проблем, эта книга увидела свет.

Я люблю тебя.

Посвящается Алисе и Летиции, моим двум принцессам.

До вашего появления на свет я воображал себя счастливым.

Но лишь теперь понимаю, как многого мне не хватало.

Я очень люблю вас обеих.

День без танца – потерянный день.

Морис Бежар

Я не знаю, что такое красота, но знаю, что нравится лично мне,

и нахожу, что этого вполне достаточно.

Борис Виан

Поэт, вот образ твой! Ты также без усилья
Летаешь в облаках, средь молний и громов,

Но исполинские тебе мешают крылья

Внизу ходить, в толпе, средь шиканья глупцов.

Бодлер. «Альбатрос» 

(перевод П. Якубовича)

Благодарности

Написать книгу о технологии, которая еще окончательно не выпущена, было бы
невозможно без поддержки со стороны сообщества как в корпорации Майкрософт, так и вне нее. Невозможно назвать всех, кто воодушевлял меня и всячески
помогал в решении этой непростой задачи, но я все же хочу явно упомянуть и поблагодарить нескольких человек (некоторые из них – мои друзья), не расставляя
их в какомлибо значимом порядке:

Из корпорации Майкрософт: Скотт Гатри (Scott Guthrie), Ян ЭллисонТэйлор (Ian EllisonTaylor), Брэд Абрамс (Brad Abrams), Роб Релиа (Rob
Relyea), Тим Хойер (Tim Heuer), Адам Кинни (Adam Kinney), Петер Блойз
(Peter Blois), Унни Равиндранатан (Unni Ravindranathan), Джо Стегман
(Joe Stegman), Майк Харш (Mike Harsh), Карен Корби (Karen Corby), Кэти
Кэм (Kathy Kam), Коррина Барбер (Corrina Barber), Беатрис Коста
(Beatriz Costa), Джеймс Кларк (James Clarke), Джон Госсман (John Gossmann), Карстен Янушевски (Karsten Januszewski), Адам Натан (Adam
Nathan), Кристиан Шорман (Кристиан Schormann), Марк Фейнхольц
(Mark Feinholz), Тэд Ху (Ted Hu), Джефф Уилкокс (Jeff Wilcox), Джастин
Анджел (Justin Angel) и многих других из подразделения разработки – за
претворение в явь предметов моих сновидений (и за то, что они об этих
предметах написали!). Я наблюдал «обновленную Майкрософт» за работой, и мне это понравилось!

Из сообщества пользователей Silverlight и WPF: Джон Смит (John Smith),

Джонатан Русс (Jonathan Russ), Бреннон Вильямс (Brennon Williams),
Кард Шиффлет (Karl Schifflett), Марлон Греч (Marlon Grech), Коррадо
Кавалли (Corrado Cavalli), Грант Хинксон (Grant Hinkson), Натан Данлэп
(Nathat Dunlap), Джон Вагонер (Josh Wagoner), Робби Ингебретсен
(Robby Ingebretsen), Кэвин Мур (Kevin Moore), Шон Вильдермут (Shawn
Wildermuth), Дэйв Кэмпбелл (Dave Campbell), Йон Гэллоуей (Jon Galloway), Джон Папа (John Papa) и всех апостолов WPF – за то, что они научили меня всему, что я знаю (или думаю, что знаю).

Коллектив издательства Sams и в особенности Нейл Роуи (Neil Rowe),

Марка Ренфроу (Mark Renfrow), Мэнди Фрэнк (Mandie Frank) и Дженейл
Бриз (Geneail Breeze) – за проявленное терпение и поддержку начинающего автора.

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

Всех своих друзей, в Сети и в реальной жизни, которые вынуждены были

мириться с тем, что я то работаю над книгой, то говорю о книге, то думаю
о книге – даже во сне.

Отдельное спасибо Бреннону Вильямсу, который делился со мной бесценными комментариями и советами; Дж. Бойду Нолану (J. Boyd Nolan) – за техническое рецензирование и редактирование и за перевод на VB.NET примеров, написанных на C#; Адаму Натану, который предложил план книги еще до того, как я
приступил к работе над ней; Шону Вильдермуту, который не раз вытаскивал меня
из технических ям; Петеру Блойзу за то, что он терпеливо выслушивал мои отчеты
об ошибках и предлагал решения; Тиму Хойеру и Адаму Кинни, которые дали ясно
понять, что для них Silverlight – куда больше, чем просто работа, и всем разработчикам за их постоянную заинтересованность и крайне полезные обсуждения.

Разработка ПО – это страсть. Тем, у кого я каждодневно учусь, и тем, кого я

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

Нам важно ваше мнение!

Вы, читатель этой книги, – наш самый важный критик и комментатор. Мы

ценим ваше мнение и хотим знать, что мы сделали правильно, что могли бы улучшить, на какие темы нам стоило бы опубликовать книги. Да и вообще, какими
мыслями вы хотели бы с нами поделиться.

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

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

Если будете писать, не забудьте указать название и автора книги, а также свое

имя и телефон или адрес электронной почты. Я внимательно изучу ваши замечания и направлю их автору и редакторам, работавшим над книгой.

Электронная почта: webdev@samspublishing.com

Почтовый адрес:
Neil Rowe
Executive Editor
Sams Publishing
800 East 96th Street
Indianapolis, IN 46240 USA

В помощь читателям

Зайдите на наш сайт и зарегистрируйте свой экземпляр книги по адресу

www.informit.com/9780672330148, чтобы получить доступ к обновлениям, загружаемым материалам или перечню замеченных опечаток.

Введение

С выходом Windows Presentation Foundation (новая система разработки графических интерфейсов пользователей для персональных приложений Windows)
в 2006 г. и Silverlight в 2008 г. процесс разработки клиентских приложений изменился в лучшую сторону. Корпорация Майкрософт приняла смелое решение распрощаться с некоторыми концепциями и технологиями, которые оставались неизменными с самой первой версии Windows, и заменить их чемто более новым и
совершенным. Конечно, идти в ногу со всеми новинками, предлагаемыми разработчикам ПО, нелегко, но на этот раз стоит постараться. Майкрософт поставила
на Silverlight и WPF очень много, тут просто не может быть неудачи. Именно
в этих технологиях – будущее разработки клиентских приложений.

Silverlight реализована на многих платформах в виде надстройки над браузером. И такие надстройки скоро окажутся на большинстве клиентских компьютеров, обращающихся к Интернету, поскольку процедура их развертывания не
сложнее загрузки обычного вебконтента, а раздавать их способен любой вебсервер без какой бы то ни было дополнительной инфраструктуры. Благодаря богатству графического интерфейса и простоте обращения к удаленным службам
Silverlight станет одним из основных игроков на поле обогащенных интерактивных приложений (rich interactive applications – RIA). Кроме того,  Silverlight открывает путь к технологии разработки клиентских приложений Windows
Presentation Foundation, за которой Майкрософт видит будущее программирования для персональных компьютеров.

В Сети веб, где в настоящее время главную роль играет Adobe Flash, Silverlight

представляет не просто альтернативу. В ее основе лежит .NET! Любой программист, знакомый с .NET, воспримет Silverlight как дом родной, поскольку и библиотеки, и языки программирования (C#, VB.NET, Ruby, Python), и среда разработки
(Visual Studio, Expression Studio) те же самые. К тому же программистам для
Silverlight доступны все новые концепции, возникшие и отточенные при создании
Windows Presentation Foundation: привязка к данным, отделение поведения от
представления, элементы управления, не имеющие собственного внешнего вида,
но открытые для стилизации и применения шаблонов с помощью таких
могучих инструментов, как Expression Blend, развитая система анимации, интеграция с мульмедийным содержимым и т. д. Новый язык разметки XAML (XMLbased Application Markup Language), разработанный Майкрософт, может выступать в качестве моста между программистами и дизайнерами, что открывает
совершенно новые возможности работы над проектами.