2 Первый взгляд: Microsoft
®
Silverlight 3 ™
Лоуренс Морони
Первый взгляд: Microsoft® Silverlight™ 3
Предварительная версия
Лоуренс Морони
ОПУБЛИКОВАНО Microsoft Press A Division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399 Copyright © 2009 by Laurence Moroney Все права защищены. Ни одна часть данной книги не может быть воспроизведена в любой форме или любыми средствами без письменного разрешения издателя. 1 2 3 4 5 6 7 8 9 QWT 4 3 2 1 0 9 Книги Microsoft Press распространяются по всему миром оптом и в розницу. Для получения дополнительной информации о международных изданиях обращайтесь в региональный офис Корпорации Microsoft или напрямую в Microsoft Press International по факсу (425) 936-7329. Посетите наш Веб-сайт по адресу www.microsoft.com/mspress. Присылайте комментарии на адрес электронной почты
[email protected]. Microsoft, Microsoft Press, Access, DirectShow, Expression, Expression Blend, InfoPath, IntelliSense, Internet Explorer, MSDN, Outlook, Silverlight, SQL Server, Visio, Visual Basic, Visual C#, Visual Studio, Win32, Windows, Windows Media, Windows NT, Windows Server и Windows Vista являются или зарегистрированными торговыми марками или торговыми марками групп компаний Microsoft. Другие упоминаемые здесь наименования продуктов или названия компаний могут быть торговыми марками соответствующих владельцев. Все упоминаемые в книге названия компаний, организаций, продуктов, доменные имена, адреса электронной почты, логотипы, люди, места и события являются вымышленными. Никакой связи с реальными компаниями, организациями, продуктами, доменными именами, адресами электронной почты, логотипами, людьми, местами или событиями они не подразумевают и не имеют. Данная книга представляет видение и мнение автора. Информация, содержащаяся в ней, предоставляется без всяких выраженных, установленных или предполагаемых гарантий. Ни авторы, Microsoft Corporation, ни распространители или продавцы не несут никакой ответственности за любой ущерб, который может быть причинен прямо или косвенно данной книгой. Body Part No. X15-53872
Новые возможности Silverlight 3 Тот, кто знаком с Silverlight 2, наверняка, уже имеет основные навыки работы с .NET и построения с его помощью насыщенных интерактивных Интернет‐приложений. Но Silverlight 3 предлагает целый ряд новых возможностей, некоторые из которых обсуждаются в данном разделе. Если вы никогда ранее не сталкивались с Silverlight, некоторые приведенные здесь фрагменты кода и XAML‐файлы могут показаться несколько странными. В этом случае, лучше пропустить этот раздел и вернуться к нему после прочтения всего остального материала книги. Ну а те, кто знает о Silverlight не понаслышке, вперед! Я уверен, вам понравится то, о чем вы здесь узнаете. В данном разделе будут рассмотрены некоторые самые яркие новые функции, появившиеся в SL3, включая 3D‐эффекты, замедление анимации, поддержку видео в формате H.264, пиксельные шейдеры и приложения, выполняющиеся вне браузера.
Трехмерные эффекты с преобразованиями перспективы Одной из наиболее захватывающих возможностей, добавленных в Silverlight 3, является преобразования перспективы. В двух словах, преобразования перспективы – это преобразования, которые могут применяться к элементам XAML для моделирования их вращения в трехмерном пространстве. Следует отметить, что это не реальное 3D‐пространство, поскольку здесь нет трехмерного моделирования с помощью сеток, построения теней, удаления скрытых линий и пр., но эта возможность позволяет моделировать 3D‐эффекты с помощью XAML. Посмотрим, как это делается:
В данном примере представлен XAML‐код, описывающий изображение быка. (Если бы я рассказал историю того, где и как я достал эту картинку, скорее всего, вы бы мне не поверили!) Если выполнить этот код в браузере с поддержкой Silverlight, будет получено следующее изображение (рис. 1).
6
РИС. 1
Представление изображения быка без перспективы
Теперь представим, что экран является трехмерным пространством. Горизонтальная ось – это ось Х, вертикальная ось – ось Y, и нормаль к поверхности – ось Z. Если требуется создать впечатление разворота изображения в трехмерном пространстве, так чтобы его левая часть «уходила вглубь» экрана, необходимо вращать изображение относительно оси Y. Аналогичным образом, если требуется развернуть изображение так, чтобы вглубь экрана уходила его верхняя или нижняя часть, вращение выполняется относительно оси Х. На первый взгляд, может показаться, что необходимо развернуть изображение относительно оси Z, но это ось, перпендикулярная к плоскости экрана. Таким образом, вращение относительно этой оси в трехмерном пространстве приведет лишь к изменению угла представления изображения. Итак, рассмотрим код, обеспечивающий перспективное представление изображения путем разворота на 45 градусов относительно оси Y:
7
Результаты представлены на рис. 2.
РИС. 2
Вращение изображение относительно оси Y
Аналогично, разворачивая изображение относительно оси Х, можно создать перспективу, когда вглубь экрана будет уходить верхняя или нижняя часть изображения.
8
Рассмотрим пример:
Результат представлен на рис. 3:
РИС. 3. Вращение относительно оси Х
9
Обратите внимание, что Silverlight рассматривает изображения как прозрачные. Таким образом, если развернуть картинку так, чтобы она повернулась к нам тыльной стороной, мы увидим перевернутое изображение. Итак, если свойству Rotation (Поворот) задать значение 135 градусов, получим результат, подобный представленному на рис. 4.
РИС. 4. Использование преобразования перспективы для просмотра изображения с тыльной стороны
С помощью класса Storyboard (Раскадровка) можно выполнить анимацию разворота. Подробнее о работе со Storyboard рассказывается в главе 5, «Трансформация и анимация в XAML», поэтому если код кажется несколько странным, не отчаивайтесь, со временем мы со всем разберемся.
Этот фрагмент кода просто обеспечивает создание Storyboard, выполняющегося в течение 2 секунд и изменяющего значение RotationX от 0 до 360, и повторение этого процесса. В результате создается эффект постоянного вращения изображения вокруг оси Х в трехмерном пространстве.
11
Замедление анимации Функции замедления позволяют создавать и использовать различные специальные эффекты анимации, включая эффекты подпрыгивания или «пружины». Silverlight 3 поставляется с рядом встроенных функций замедления анимации в пространстве имен System.Windows.Media.Animation. Более подробно они обсуждаются в главе 5, «Трансформация и анимация в XAML». Использование функций замедления анимации существенно упрощает анимацию объектов и придание им реалистичного поведения, поскольку в этом случае разработчику не приходится вдаваться в физику процесса. Например, если необходимо обеспечить реалистичное «подпрыгивание», можно либо самостоятельно провести математические расчеты, описывающие физику такого поведения, и написать соответствующую программу, либо использовать встроенную функцию анимации подпрыгивания посредством дочернего элемента EasingFunction (функция замедления) тега анимации. Рассмотрим этот сценарий. В Silverlight для анимации перемещения эллипса сверху вниз по экрану используется объект , дочерний элемент которого (Анимация свойств типа Double) описывает поведение свойства Top (Верх) эллипса. Чтобы упростить эту задачу, просто добавляем описание функции замедления, как показано в данном примере:
12
Описание EasingFunction (выделено жирным шрифтом) включает используемый тип замедления. Каждый тип имеет разные параметры для описания замедления. Итак, например, для моделирования подпрыгивания упавшего объекта, просто задаются начальное и конечное положение его вершины (от 0 до 300) и используется функция замедления для описания поведения подпрыгивания. В данном случае задано, что объект подпрыгнет 10 раз в конце анимации (поскольку EasingMode задано значение EaseOut). Заметьте, существует три режима замедления: EaseIn, при котором функция замедления применяется в конце анимации; EaseOut, при котором она применяется в начале анимации; и EaseInOut, при котором имитация заданного движения происходит как в начале, так и в конце анимации (примерно половину пути применяется режим EaseIn и затем EaseOut). Итак, представим эффект подпрыгивания, описанный ранее, когда значение изменяется от 0 до 100 и применяется функция замедления для реализации подпрыгивания. В этом случае при использовании различных режимов замедления происходит следующее:
EaseIn – значение изменяется от 0 до 100. При этом функция обеспечит колебательные изменения значения в области 0 заданное количество раз, что создаст эффект подпрыгивания объекта вокруг начальной точки перемещения. EaseOut – значение изменяется от 0 до 100, но функция, прежде чем объект достигнет конечной точки перемещения, обеспечивает колебательные изменения значения в области 100 заданное количество раз, что создаст эффект подпрыгивания объекта вокруг конечной точки. EaseInOut обеспечивает причудливое сочетание предыдущих двух режимов, когда значение «колеблется» как в начале, так и в конце заданного диапазона перемещения.
В предыдущем примере использовался режим EaseOut, поскольку он обеспечивает более естественный эффект «подпрыгивания» мяча при соударении с твердой поверхностью. Встроенные функции замедления располагаются в пространстве имен System.Windows.Media.Animation. Приведенные далее описания основываются на режиме EaseIn, но на их базе можно сделать выводы об эффектах, создаваемых в случае применения режимов EaseOut и EaseInOut. Зачастую разница в поведении этих функций настолько мала, что для лучшего понимания необходимо просто поэкспериментировать с ними самостоятельно.
13
К встроенным функциям замедления относятся:
BackEase Обеспечивает небольшой ход объекта назад в начале движения. Это немного напоминает то, как машина ведет себя на холме, когда она немного откатывается назад, прежде чем начать двигаться вперед. BounceEase Как было показано в предыдущем примере, эта функция создает эффект подпрыгивания. CircleEase Обеспечивает изменение ускорения анимации соответственно тригонометрической функции, с постепенным нарастанием ускорения. CubicEase Подобно CircleEase, но изменение ускорения осуществляется по гиперболе (кубическое уравнение времени), что обусловливает более медленное изменение ускорения в начале и более быстрое его изменение в конце движения. ElasticEase Подобно BounceEase в том, что обеспечивает осцилляцию значения вокруг заданной точки. ExponentialEase Подобно CircleEase и CubicEase, обеспечивает экспоненциальное изменение ускорение от одного значения к другому. PowerEase Обеспечивает экспоненциальное изменение ускорения, при котором значение коэффициента ускорения пропорционально степени времени. QuadraticEase Подобно CubicEase за исключением того, что в данном случае значение пропорционально квадрату времени. QuarticEase Подобно QuadraticEase и CubicEase. В данном случае значение пропорционально времени в 3 степени. QuinticEase Подобно QuadraticEase, CubicEase и QuarticEase. В данном случае значение пропорционально времени в 5 степени. SineEase Обеспечивает изменение значения по синусоиде.
Обратите внимание, что все это классы, т.е. они имеют соответствующие свойства, которые позволяют конфигурировать и настраивать эти режимы. Например, используемый в предыдущем примере BounceEase содержит свойства для описания количества колебаний и «прыгучесть» анимации (например, изменение диапазона значений при изменении направления движения). При работе с функциями замедления всегда внимательно изучайте документацию по API, чтобы обеспечить необходимые эффекты.
Поддержка видео в формате H264 В Silverlight 3 добавлена поддержка декодера H264, таким образом, может обеспечивать воспроизведение в Silverlight содержимого, кодированного в формате H264. Это знаменательное событие для компаний, вложивших средства в оцифровку своих ресурсов в этот формат и желающих использовать преимущества Silverlight для построения насыщенных пользовательских интерфейсов.
14
Если вы никогда ранее не работали с H264, это можно сделать в полной версии Expression Encoder 2, который при наличии пакета обновлений Service Pack 1 поддерживает кодирование в этот формат. Если у вас нет Expression Encoder 2, бесплатный кодек можно найти по адресу http://www.h264encoder.com. Далее в данном разделе будет рассматриваться кодирование файлов с использованием Expression Encoder. В Expression Encoder можно импортировать файлы во многих форматах. Воспользуемся здесь файлом в формате MOD, который применяется во многих видеокамерах. Запустим Expression Encoder и нажмем внизу экрана кнопку Import (Импортировать). Выберите свой файл, и Expression Encoder загрузит и подготовит его. Прежде чем выполнять кодирование, на вкладке Encoder (Кодер) сверху справа можно выбрать используемый профиль кодирования. Предлагаемые профили видео представлены на рис. 5.
РИС. 5. Прифили видео, предлагаемые Expression Encoder
15
Как видите, для H.264 предлагается два профиля: Large (большой) и Small (малый). Выберите большой. Чтобы выбрать часть видеозаписи для кодирования (если требуется вырезать часть видео), перемещайте желтый маркер по временной шкале, располагающейся сразу под окном видео. Щелкните правой кнопкой мыши и выберите Mark In (Разметить до), чтобы обрезать все до этого момента, или Mark Out (Разметить после), чтобы обрезать все после маркера. Затем нажимаем Encode (Кодировать). По завершении кодирования получаем MP4‐файл, кодированный в формате H.264. Такой файл может быть воспроизведен с помощью Silverlight‐элемента MediaElement. Обратите внимание, что Expression Encoder 2 SP1 при кодировании в формат H.264 не поддерживает Silverlight. Эта поддержка появится в следующей версии. Рассмотрим простой пример. Обратите внимание, что используется расширение файла .MP4:
Это обеспечит воспроизведение H264‐содержимого в MediaElement Silverlight. Более подробно остановимся на этом в главе 10. Пример представлен на рис. 6.
16
РИС. 6. Воспроизведение содержимого в формате H.264
Пиксельные шейдеры Вероятно, вы знакомы с пиксельными шейдерами (Pixel Shaders) из WPF. Пиксельные шейдеры – это набор программных инструкций, используемых для вычисления цвета отдельных изображений на экране. Обычно они выполняются в GPU1 и, таким образом, работают очень быстро. Они написаны на языке обработки полутонов HLSL2, синтаксис которого подобен С. Библиотека System.Windows.Media.Effects содержит встроенные пиксельные шейдеры для размытия и создания теней. Эти шейдеры могут быть добавлены в изображение с помощью его свойства Effect (Эффект) в коде или XAML. Рассмотрим пример:
Как это выглядит, можно увидеть на рис. 7:
18
РИС. 7. Использование встроенных эффектов Blur и Drop Shadow
19
С помощью HLSL можно также создавать собственные пиксельные шейдеры. Подробное обсуждение этого выходит за рамки данной книги, но в демонстрационных целях рассмотрим простой пример. В WPF (и Silverlight) эффекты обычно кодируются в виде .FX‐файла. Вот пример одного из таких файлов, создающий эффект «обесцвечивания» изображения: sampler2D implicitInput : register(s0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(implicitInput, uv);
float4 complement;
complement.rgb = color.r*.3 + color.g*.59 + color.b*.11;
complement.a = color.a;
return complement;
}
Эффект обесцвечивания создается путем извлечения значения цвета пиксела и умножения значений красного (Red), зеленого (Green) и синего (Blue) каналов на некоторый коэффициент. В данном примере интенсивность красного канала сокращается до 30% от исходного значения, зеленого – до 59%, и синего – до 11%. Данный HLSL‐код компилируется в PS‐файл (исходный код, как правило, храниться в виде .fx‐ файла), который должен быть доступен вашему Silverlight‐приложению. Это обеспечивается с помощью инструмента fxc DirectX SDK. Можно унаследовать класс от ShaderEffect и на его базе создать Brush (Кисть), как в следующем примере. Заметьте, что URISource (URI источника) для PixelShader (Пиксельный шейдер) указывает на скомпилированный ps: public class ApplyGreyEffect : ShaderEffect
20
{
private static PixelShader _pixelShader = new PixelShader() { UriSource = new Uri("ps/Greyeffect.ps", UriKind.RelativeOrAbsolute) };
public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(ApplyGreyEffect), 0);
public ApplyGreyEffect()
{
PixelShader = _pixelShader;
UpdateShaderValue(InputProperty);
}
public Brush Input
{
get { return (Brush)GetValue(InputProperty); }
set { SetValue(InputProperty, value); }
}
}
Теперь этот специальный класс можно использовать как пиксельный шейдер в коде. ApplyGreyEffect _effect = new ApplyGreyEffect(); Img1.Effect = _effect;
Приложения, выполняющиеся вне браузера В Silverlight 3 появляется возможность писать SIlverlight‐приложения, выполняющиеся вне браузера. Это позволяет создавать приложения с собственным окном, которые могут быть добавлены в меню Пуск или на Рабочий стол. Сделать это очень просто, как будет показано через мгновение: необходимо лишь ввести некоторые настройки в манифест приложения, определяющие возможность его выполнения в автономном режиме. 21
Создадим новое Silverlight‐приложение SlOOB. Добавим на страницу по умолчанию что‐то простенькое, например, текстовый блок «Hello World», и выполним приложение. Оно будет выполнено в браузере, как обычно. Однако по щелчку содержимого Silverlight правой кнопкой мыши появится меню, в котором можно увидеть новый элемент, Save for Offline Use (Сохранить для использования в автономном режиме), неактивный в данном случае. Это показано на рис. 8.
РИС. 8. Возможность выполнения вне браузера выключена
Чтобы включить эту функцию, необходимо внести некоторые изменения в манифест приложения. Это файл AppManifest.xml в папке Properties (Свойства). Он будет выглядеть примерно так:
Первым делом, добавим параметры EntryPointAssembly (Сборка точки входа) и EntryPointType (Тип точки входа). Для приложения SLOOB это должны быть SLOOB и SLOOB.App, соответственно. Теперь наш манифест выглядит следующим образом:
Далее необходимо добавить в манифест раздел Application Identity (Удостоверение приложения). В нем будут располагаться краткое имя, заголовок и аннотация приложения.
Title (Заголовок) отображается в строке заголовка отдельного окна, в котором выполняется приложение. Short name (Краткое имя) отображается на ярлыках рабочего стола и/или меню Пуск. Blurb (Аннотация) используется в разделе «Comments» (Комментарии) для файла. Его можно увидеть при просмотре свойств приложения в Windows Explorer.
Все это представлено в манифесте здесь:
Do really cool stuff at home or on the go.
Теперь, запустив приложение и щелкнув правой кнопкой мыши содержимое, можно увидеть, что пункт меню Save for Offline Use активен. Если выбрать Save for Offline Use, Silverlight представит диалоговое окно, показанное на рис. 9. 23
РИС. 9. Saving for Offline Use
Заметим, что это очень старая версия этого диалога, она может быть изменена в окончательной версии Silverlight. В этом диалоговом окне представлены опции сохранения приложения для использования в автономном режиме либо из меню Пуск, либо с Рабочего стола. В данном случае выбраны оба варианта. Щелкните Confirm (Подтвердить), чтобы подтвердить выбранные настройки, или No, чтобы отменить их. Если щелкнуть Confirm, будут сохранены ярлыки, и приложение будет запускаться в собственном окне. Это можно увидеть на рис. 10.
РИС. 10. Приложение, выполняющееся в собственном окне
Обратите внимание, что по щелчку правой кнопкой мыши этого приложения предлагается опция Remove This Application (Удалить это приложение), которая обеспечивает удаление приложения из всех месторасположений, где оно установлено.
24
В этих примерах для приложения используются значки, предоставляемые Silverlight по умолчанию. Их можно переопределить с помощью PNG‐файлов со значками четырех разных размеров. Таким образом, должны быть предоставлены PNG размерами 16х16, 32х32, 64х64 и 128х128, соответствующие необходимым значкам. Понадобится добавить описание в манифест приложения, определяющее эти размеры и месторасположения файлов, и задать в Visual Studio свойству Build Action значков значение Content (Содержимое). Рассмотрим манифест приложения:
Do really cool stuff at home or on the go. sl16.png sl32.png sl64.png sl128.png
Итак, теперь после запуска приложения и сохранения его для использования в автономном режиме, мы получим заданные значки!
25
Диалоговое окно Save File Теперь Silverlight 3 включает диалоговое окно Save File (Сохранить файл), с помощью которого пользователи могут сохранять содержимое на жесткий диск. При использовании этой возможности пользователи не ограничены лишь изолированным хранилищем. Рассмотрим простой пример использования диалогового окна Save File в своих приложениях. Сначала создадим новое Silverlight‐приложение SFDialog. Добавим в стандартный Page.xaml текстовое поле (Text Box) и кнопку (Button). Ассоциируем событие щелчка с кнопкой. В результате, XAML‐код должен выглядеть следующим образом:
По щелчку кнопки должно открываться диалоговое окно Save File. При выборе в этом диалоге фала, в файловую систему будет записываться текстовый файл, содержащий текст, введенный в Text Box. Все это происходит в событии btn_Click. Рассмотрим код: private void btn_Click(object sender, RoutedEventArgs e) { SaveFileDialog mySaveDialog = new SaveFileDialog(); bool? ret = mySaveDialog.ShowDialog(); if (ret == true) { using (Stream fs = (Stream)mySaveDialog.OpenFile()) { byte[] info = (new UTF8Encoding(true)).GetBytes(tts.Text); fs.Write(info, 0, info.Length);
26
fs.Close(); }
} }
Конечно, все это выполняется в демонстрационных целях и не включает контроля достоверности и ошибок, обязательных в реальных приложениях. В данном случае предполагается, что пользователь всегда вводит действительный путь. Данный код обеспечивает создание нового экземпляра класса SaveFileDialog (Диалог Сохранить файл) и вызов его метода ShowDialog() (Показать диалог), который обеспечивает вывод диалога на экран. По щелчку пользователя OK или Cancel (Отменить) поток выполнения будет возвращаться в программу, при этом состояние диалогового окна сохраняется в данном экземпляре класса. Итак, если пользователь после ввода имени файла щелкает OK, метод OpenFile() фактически открывает файл на запись. Остальной код выполняет сериализацию содержимого текстового поля в байтовый поток, который может быть записан. Рассмотрим все это в действии. На рис. 11 показано приложение:
РИС. 11. Приложение с текстом, который должен быть сохранен
27
По нажатию кнопки Save Me (Сохрани меня) открывается диалоговое окно Save File (рис. 12). Поскольку я использую Windows 7, на снимке экрана можно увидеть стандартный диалог Windows 7.
РИС. 12. Диалоговое окно Save File
Здесь не заданы стандартные имя или тип файла, поэтому текстовая строка пуста. Чтобы протестировать приложение, введите действительное имя файла, например Test.txt, тип не указывайте и щелкните Save (Сохранить). Файл будет записан в заданный каталог. В данном случае, я выбрал рабочий стол, т.е. файл записан на рабочий стол. Откройте файл и увидите, что в нем хранится содержимое, введенное ранее в текстовую строку. Свойства класса SaveFileDialog позволяют задавать список фильтров файлов и выбранный файл. Фильтры задаются в виде разделяемого вертикальной чертой списка, включающего текстовое описание, за которым следует фильтр, и за ним следующее текстовое описание, и т.д. Итак, классический диалог Save, позволяющий выбирать текстовый файл (*.txt) или все файлы (*.*) был бы описан следующим образом: mySaveDialog.Filter = "Text Files (.txt)|*.txt|All Files|*.*";
28
Также можно задать фильтр по умолчанию. Это целое значение, обозначающее порядковый номер записи в списке Filter (Фильтр), которая будет использоваться по умолчанию. Заметьте, что список начинается не с нуля, поэтому чтобы сделать фильтром по умолчанию «Text files (.txt)», свойство FilterIndex (Индекс фильтра) должно быть задано следующим образом: mySaveDialog.FilterIndex = 1;
Теперь на рис. 13 представлен новое улучшенное диалоговое окно Save File.
РИС. 13. Диалоговое окно Save As с фильтрами
Итак, теперь пользователи могут сохранять данные на жесткий диск в любой каталог по их желанию.
Связывание данных элементов XAML Для связывания компонентов в XAML обычно необходимо участие разработчика. Например, чтобы задать ширину объекта с помощью ползунка, необходим некоторый код для извлечения значения ползунка, поиска соответствующего объекта по имени (дизайнер может не присваивать имена всем объектам, поэтому разработчику придется добавить имя) и задания его ширины. Это создает множества сценариев, в которых требуется вручную обрабатывать очень тривиальные задачи.
29
В Silverlight 3 появляется связывание данных элементов. Это позволяет связывать свойства элементов друг с другом, таким образом, при изменении одного элемента связанные элементы тоже изменяются. Рассмотрим упомянутый выше сценарий. Теперь он может быть реализован без всякого кода, лишь за счет связывания данных в XAML. В следующем фрагменте кода описывается элемент управления slider (ползунок) типа Slider и синий прямоугольник:
Как видите, для прямоугольника задана высота 100 пикселов, а ширина задана как значение Binding (Привязка). В качестве имени элемента (ElementName), с которым связано это значение, задан «slider», и значение, которое передается от этого элемента, – значение его свойства Value (Значение). Таким образом, любое перемещение ползунка будет приводить к изменению ширины прямоугольника. Состояние по умолчанию представлено на рис. 14.
РИС. 14. Связывание данных элементов XAML
Если переместить ползунок вправо, значение его свойства Value увеличится, что приведет к увеличению ширины прямоугольника. Это отражено на рис. 15. 30
РИС. 15. Увеличение ширины прямоугольника с помощью ползунка
И наоборот, если переместить ползунок влево, значение Value уменьшится, таким образом, прямоугольник станет уже. Это можно увидеть на рис. 16.
РИС. 16. Уменьшение ширины прямоугольника с помощью ползунка
Более подробно связывание данных и синтаксис связывания данных рассматриваются в главе 14. Данный синтаксис является универсальным и может использоваться для всех данных, а также для описания поведения элементов, как было показано выше. 31
Заключение В данной главе представлено несколько новых и захватывающих возможностей, появившихся в наборе инструментов в Silverlight 3. Конечно, это не все, и мы лишь едва коснулись некоторых из них, в частности, выполнения приложений вне браузера. Цель данной главы – дать ощущение того, что можно сделать. Обязательно прочитайте обо всем подробнее, когда книга будет опубликована полностью позже в этом году.
32
ɉɟɪɜɵɣɜɡɝɥɹɞ Microsoft Silverlight 3 ™
®
ɉɊȿȾȼȺɊɂɌȿɅɖɇȺəȼȿɊɋɂə
Ваш первый взгляд на инструменты и технологии создания приложений с использованием Silverlight . Начните применять Silverlight —кросс-платформенный, кросс-браузерный плагин для представления расширенных мультимедийных интерактивных приложений и пользовательских интерфейсов следующего поколения. Книга основана на знаниях команды разработчиков Microsoft Silverlight, процесс изучения построен с использованием практических упражнений, подробных указаний и примеров кода, чтобы вы сразу могли перейти к собственным разработкам.
Об авторе Laurence Moroney (Лоуренс Морони) является ведущим экспертом по технологиям Microsoft,специализирующимся на Silverlight и User Experience. Имеет более чем десятилетний опыт разработки и реализации программного обеспечения и является автором около десятка книг по разнообразнейшим тематикам, среди которых Windows Presentation Foundation, Веб-разработка, безопасность и способность к взаимодействию.
Изучите как: •
Использовать XAML для отрисовки, масштабирования и анимации
•
Воспользоваться мощью Microsoft .NET и удобством языков поддерживаемых Visual Studio®
•
Применять разнообразные компоненты, создавая и расширяя свои собственные
•
Экспериментировать с возможностями медиа и Deep Zoom
•
Создавать подключаемые приложения
•
Применять динамические языки, такие как Ruby и Python
•
Управлять приложениями Silverlight при помощи ASP.NET
ПОЛЕЗНЫЕ РЕСУРСЫ MICROSOFT ® Для дизайнеров •
Веб-сайт Expression www.microsoft.com/rus/expression
•
Бюллетень Expression для дизайнеров www.microsoft.com/rus/expression /news-press/newsletter
Для веб-разработчиков •
Веб-технологии Microsoft www.microsoft.com/rus/web
ɋɥɟɞɢɬɟɡɚɨɛɧɨɜɥɟɧɢɹɦɢɤɧɢɝɢɧɚ www.remix.ru и www.microsoft.com/rus/expression/resources
•
Центр разработки ASP.NET msdn microsoft.com/ru-ru/asp.net
Для разработчиков •
Инструменты на русском языке www.visualstudio2008.ru
•
Веб-сайт для разработчиков msdn.microsoft.com/ru-ru
Part No. X14-55516
Подробнее см. на msdn.microsoft.com/ru-ru
ISBN-13: 978-0-7356-2528-0ɉ ISBN-10: 0-7356-2528-X
[msdn.microsoft.com/ru-ru]
Программирование/Веб