Download - Silverlight 5

Transcript
Page 1: Silverlight 5

Евгений ЖарковSilverlight MVP & MCTS

Silverlight 5

Page 2: Silverlight 5

Отрисовка текста

Page 3: Silverlight 5

Character Spacing

Page 4: Silverlight 5

Многоколоночность

RichTextBox RichTextBoxOverflow RichTextBoxOverflow

Page 5: Silverlight 5

Многоколоночность

Page 6: Silverlight 5

Многоколоночность

RichTextBox RichTextBoxOverflow

RichTextBoxOverflow

RichTextBoxOverflow

RichTextBoxOverflow

Page 7: Silverlight 5

Многоколоночность

Page 8: Silverlight 5

Native Windows

Page 9: Silverlight 5

Неограниченное количество кликов

Неограниченное количество кликов (двойной, тройной и т.д.)

Различные поведения приложения:• Word использует двойное нажатие для

выделения слова, тройное нажатие для выделения параграфа

• Safari 3, Firefox 3, & IE7: тройное нажатие выделяет весь текст внутри элемента

Page 10: Silverlight 5

Неограниченное количество кликов

Page 11: Silverlight 5

XAML Debugging

РАНЬШЕ:

Ищешь информацию о проблемах со связями в Output Window

Создаешь только для отладки конвертеры значений, привязываешь ко всем

связям, расставляешь внутри точки остановы

ТЕПЕРЬ:

Ставить точки останова в XAML при связке

Устанавливать точки останова во время runtime, как это делается с обычным

кодом

Использовать точки останова с условием

Наблюдать за значениями, источниками, ошибками и т.п.

Заходить в код конвертеров

Page 12: Silverlight 5

Неявные шаблоны данных

• Работаю по принципу неявных стилей• Можно использовать в любом content или

items control’е• Связаны с типом данных: классом,

структурой, но не интерфейсом

Page 13: Silverlight 5

Обычные (явные) шаблоны данных

class Tweet : TimelineItem {…}class DirectMessage : TimelineItem {…}class Notification : TimelineItem {…}

TimelineItem[] items = new TimelineItems[]{ new Tweet(“Pete Brown”, “pete.png”, “…”), new Tweet(“Jon Galloway”, “jon.png” , “…”), new Tweet(“Joe Stagner”, “joe.png” , “…”), new Tweet(“Jesse Liberty”, “jesse.png” , “…”)};

Data DataTemplatePete Brown

Jesse Liberty

Joe Stagner

Jon Galloway

Resulting Presentation

Page 14: Silverlight 5

Неявные шаблоны данных

class Tweet : TimelineItem {…}class DirectMessage : TimelineItem {…}class Notification : TimelineItem {…}

TimelineItem[] items = new TimelineItems[]{ new Tweet(“Pete Brown”, “pete.png”, “…”), new Tweet(“Jon Galloway”, “jon.png” , “…”), new DirectMessage(“Joe Stagner”, “joe.png” , “…”), new Notification(“Jesse Liberty”, “jesse.png” , “…”)};

Pete Brown

Jesse Liberty

Joe Stagner

Jon Galloway

Tweet

DirectMessage

Notification

Data Implicit DataTemplate Resulting Presentation

Page 15: Silverlight 5

Расширения разметки

Можете создавать собственные расширения разметки

Позволяет запускать свой код во время разбора XAML

Примеры расширений разметки: {Binding}, {RelativeSource} и т.п.

Проще, чем пользовательские присоединяемые свойства (attached

properties)

Более краткий синтаксис

<TextBlock Text="{my:SumExtension FirstNumber=5, SecondNumber=2}" />

Page 16: Silverlight 5

Расширения разметки

Реализуйте IMarkupExtension<T> (System.XAML) Где T – тип возвращаемых данных (обязательно ссылочный тип)

Задайте свойства для параметров

Реализуйте ProvideValue() для возврата значения

public class SumExtension : IMarkupExtension<object>{ public int FirstNumber { get; set; } public int SecondNumber { get; set; }

public object ProvideValue(IServiceProvider serviceProvider) { return FirstNumber + SecondNumber; }}

Page 17: Silverlight 5

Ancestor RelativeSource

Позволяет связь к свойствам на родительском элементе управления

Привязка из коробки

Реализует возможности WPF

Использует Binding.RelativeSource для указания источника в дереве Использует AncestorType для задания типа родителя

Использует AncestorLevel для указания уровня в дереве

<TextBlock Text="{Binding Tag, RelativeSource={RelativeSource AncestorType=Grid, AncestorLevel=2}}"/>

Page 18: Silverlight 5

Привязка в стилях

Возможно изменять стили в runtime

Реализует возможности WPF

Поддержка привязки реализована прямо в setter’ах стиля Стандартный синтаксис привязки

Поддержка всех возможностей (конвертеры, форматизаторы и т.п.)

<Setter Property="Foreground" Value="{StaticResource theBrush}" />

Page 19: Silverlight 5

Elevated Trust

Внутрибраузерные Elevated-Trust приложения

Неограниченный доступ к файловой системе

Поддержка нескольких окон

Поддержка Automation and P/Invoke

Page 20: Silverlight 5

Внутрибраузерный Elevated-Trust

Можно запускать приложения с расширенными правами внутри браузера Больше не нужно использовать OOB для получения расширенных прав

Поддержка клавиатуры в полноэкранном режиме, дополнительные возможности для таких

приложений, как киоски и медиа-проигрыватели

Доступны все возможности расширенных прав

Требуется активация через Client Access Policy или в реестре Windows Ограниченные к частной сети или одной машине

XAP должен быть подписан сертификатом Сертификат должен присутствовать в Trusted Publisher Certificate хранилище

Для разработчиков, “localhost” должен быть в белом списке

Пока только в Windows

Page 21: Silverlight 5

Client Access Policy

Доступнен установив атрибут ElevatedPermissions в элементе

SecuritySettings в значение Required

<Deployment.OutOfBrowserSettings> ... <OutOfBrowserSettings.SecuritySettings> <SecuritySettings ElevatedPermissions="Required" /> <OutOfBrowserSettings.SecuritySettings> ...</Deployment.OutOfBrowserSettings>

Page 22: Silverlight 5

Реестр Windows

Найдите элемент:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight

Устанавливаете AllowElevatedTrustAppsInBrowser (DWORD) в 0x00000001

для разрешения запуска elevetad-trust приложений внутри браузера

Используйте AllowInstallOfElevatedTrustApps для активации/деактивации

полной инсталляции elevated-trust приложений (внутри браузера или OOB)

Используйте AllowLaunchOfElevatedTrustApps для активации/деактивации

elevated-trust приложений (внутри браузера или OOB)

Page 23: Silverlight 5

Доступ к файловой системе

Неограниченный доступ к файловой системе для elevated-trust

приложений Одинаковые права с пользователем

Доступ к полной информации

Page 24: Silverlight 5

Доступ к файловой системе

Silverlight 4 Silverlight 5

Page 25: Silverlight 5

Улучшения в стеке графики

Улучшена производительность и отрисовка

Аппаратное ускорение Расширенная поддержка GPU

Новое 3D API

Векторная печать

Предпросмотр печати

Page 26: Silverlight 5

Улучшенная производительность

Улучшена стартовая производительность Поддержка многоядерности в JIT

Улучшено время парсинга XAML Особенно для UserControls и ResourceDictionaries

Добавлена поддержка 64-bit

Оптимизация задержек в сети (network latency)

90% прирост производительности в сценариях ClientHttpWebRequest

Аппаратное ускорение отрисовки у Internet Explorer 9 в безоконном

режиме Используется новое SurfacePresenter API

Page 27: Silverlight 5

Другие улучшения

Доступнка поддержка WS-Trust в WCF

Поддержка Windows Azure

Поддержка In-browser HTML

Автоматизированные тесты UI

Улучшенная поддержка профилирования Память

CPU

Thread contention

А также другие мелкие улучшения во многих “уголках” продукта

Page 28: Silverlight 5

Векторная печатьPrintDocument doc = new PrintDocument();

doc.PrintPage += (s, ea) => { StackPanel printPanel = new StackPanel();

Random rnd = new Random();

for (int i = 0; i < 30; i++) { TextBlock row = new TextBlock(); row.Text = "This is row " + i + " of the current page being printed in vector mode.";

printPanel.Children.Add(row); }

ea.PageVisual = printPanel; ea.HasMorePages = false; };

doc.Print("Silverlight Vector Print");

Page 29: Silverlight 5

Векторная печатьPrintDocument doc = new PrintDocument();

doc.PrintPage += (s, ea) => { StackPanel printPanel = new StackPanel();

Random rnd = new Random();

for (int i = 0; i < 30; i++) { TextBlock row = new TextBlock(); row.Text = "This is row " + i + " of the current page being printed in vector mode.";

printPanel.Children.Add(row); }

ea.PageVisual = printPanel; ea.HasMorePages = false; };

PrinterFallbackSettings settings = new PrinterFallbackSettings(); settings.ForceVector = true; settings.OpacityThreshold = 0.5;

doc.Print("Silverlight Vector Print" , settings);

Активация PostScript

Page 30: Silverlight 5

3D

•ПОЧЕМУ 3D• Одно из главных требований клиентов (третье в

списке на user voice)• Шаг вперед в плане визуализации,

производительность и интерактивность• Современные устройства готовы к 3D

• В ОСНОВЕ ЛЕЖИТ XNA

Page 31: Silverlight 5

3D

Результат Структура проекта

Page 32: Silverlight 5

3D

ДЕМО

Page 33: Silverlight 5

Изменения в работе с Media

Улучшено управление батареей Никаких скринсейверов в полноэкранном режиме

Поддержка дистанционного управления

Аппаратное декодирование; больше GPU H.264 видео теперь декодируется аппаратно

В Beta отсутствует DRM и поддержка Mac

Поддержка 1080p В сочетании с GPU, вы можете просматривать 1080p видео на нетбуках и планшетах

Page 34: Silverlight 5

Изменения в Media

Управление скоростью проигрывания (Trick Play)

Передачи аудио-данных с малой задержкой (low-latency)

IIS Media Services 4 Теперь с поддержкой Windows Azure

Page 35: Silverlight 5

Управление скоростью (Trick Play)

Позволяет управлять скоростью проигрывания в MediaElement

Позволяет замедлить или ускорить проигрывание

Умеет проигрывать видео в обратную сторону

Используйте PlaybackRate для указания скорости (-8, -4, -2, …, 0.5, 1.2,

1.4, 2, 4, 8)

Ограничения: Нужно задавать значения из кода, если это делать в XAML они сбрасываются при

старте приложения

Page 36: Silverlight 5

Low-Latency Sounds

Поддержка low-latency звуков Raw данные (например wave файлы)

Использует XNA подход

Контроль громкости, частоты и стерео-направление звука в

пространстве

Используйте SoundEffect для загрузки wave файлов

Используйте SoundEffectInstance для проигрывания нескольких

экземпляров одного и того же аудио

Ограничения: Идентичны XNA: 8 или 16bit PCM, моно или стерео, 22.5, 44.1 или 48khz

Page 37: Silverlight 5

Будущее Silverlight

Вы здесь

Но не забывайте смотреть сюда

Page 38: Silverlight 5

Вопросы?

[email protected]@2j2e


Top Related