Download - Silverlight 5
Евгений ЖарковSilverlight MVP & MCTS
Silverlight 5
Отрисовка текста
Character Spacing
Многоколоночность
RichTextBox RichTextBoxOverflow RichTextBoxOverflow
Многоколоночность
Многоколоночность
RichTextBox RichTextBoxOverflow
RichTextBoxOverflow
RichTextBoxOverflow
RichTextBoxOverflow
Многоколоночность
Native Windows
Неограниченное количество кликов
Неограниченное количество кликов (двойной, тройной и т.д.)
Различные поведения приложения:• Word использует двойное нажатие для
выделения слова, тройное нажатие для выделения параграфа
• Safari 3, Firefox 3, & IE7: тройное нажатие выделяет весь текст внутри элемента
Неограниченное количество кликов
XAML Debugging
РАНЬШЕ:
Ищешь информацию о проблемах со связями в Output Window
Создаешь только для отладки конвертеры значений, привязываешь ко всем
связям, расставляешь внутри точки остановы
ТЕПЕРЬ:
Ставить точки останова в XAML при связке
Устанавливать точки останова во время runtime, как это делается с обычным
кодом
Использовать точки останова с условием
Наблюдать за значениями, источниками, ошибками и т.п.
Заходить в код конвертеров
Неявные шаблоны данных
• Работаю по принципу неявных стилей• Можно использовать в любом content или
items control’е• Связаны с типом данных: классом,
структурой, но не интерфейсом
Обычные (явные) шаблоны данных
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
Неявные шаблоны данных
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
Расширения разметки
Можете создавать собственные расширения разметки
Позволяет запускать свой код во время разбора XAML
Примеры расширений разметки: {Binding}, {RelativeSource} и т.п.
Проще, чем пользовательские присоединяемые свойства (attached
properties)
Более краткий синтаксис
<TextBlock Text="{my:SumExtension FirstNumber=5, SecondNumber=2}" />
Расширения разметки
Реализуйте 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; }}
Ancestor RelativeSource
Позволяет связь к свойствам на родительском элементе управления
Привязка из коробки
Реализует возможности WPF
Использует Binding.RelativeSource для указания источника в дереве Использует AncestorType для задания типа родителя
Использует AncestorLevel для указания уровня в дереве
<TextBlock Text="{Binding Tag, RelativeSource={RelativeSource AncestorType=Grid, AncestorLevel=2}}"/>
Привязка в стилях
Возможно изменять стили в runtime
Реализует возможности WPF
Поддержка привязки реализована прямо в setter’ах стиля Стандартный синтаксис привязки
Поддержка всех возможностей (конвертеры, форматизаторы и т.п.)
<Setter Property="Foreground" Value="{StaticResource theBrush}" />
Elevated Trust
Внутрибраузерные Elevated-Trust приложения
Неограниченный доступ к файловой системе
Поддержка нескольких окон
Поддержка Automation and P/Invoke
Внутрибраузерный Elevated-Trust
Можно запускать приложения с расширенными правами внутри браузера Больше не нужно использовать OOB для получения расширенных прав
Поддержка клавиатуры в полноэкранном режиме, дополнительные возможности для таких
приложений, как киоски и медиа-проигрыватели
Доступны все возможности расширенных прав
Требуется активация через Client Access Policy или в реестре Windows Ограниченные к частной сети или одной машине
XAP должен быть подписан сертификатом Сертификат должен присутствовать в Trusted Publisher Certificate хранилище
Для разработчиков, “localhost” должен быть в белом списке
Пока только в Windows
Client Access Policy
Доступнен установив атрибут ElevatedPermissions в элементе
SecuritySettings в значение Required
<Deployment.OutOfBrowserSettings> ... <OutOfBrowserSettings.SecuritySettings> <SecuritySettings ElevatedPermissions="Required" /> <OutOfBrowserSettings.SecuritySettings> ...</Deployment.OutOfBrowserSettings>
Реестр Windows
Найдите элемент:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight
Устанавливаете AllowElevatedTrustAppsInBrowser (DWORD) в 0x00000001
для разрешения запуска elevetad-trust приложений внутри браузера
Используйте AllowInstallOfElevatedTrustApps для активации/деактивации
полной инсталляции elevated-trust приложений (внутри браузера или OOB)
Используйте AllowLaunchOfElevatedTrustApps для активации/деактивации
elevated-trust приложений (внутри браузера или OOB)
Доступ к файловой системе
Неограниченный доступ к файловой системе для elevated-trust
приложений Одинаковые права с пользователем
Доступ к полной информации
Доступ к файловой системе
Silverlight 4 Silverlight 5
Улучшения в стеке графики
Улучшена производительность и отрисовка
Аппаратное ускорение Расширенная поддержка GPU
Новое 3D API
Векторная печать
Предпросмотр печати
Улучшенная производительность
Улучшена стартовая производительность Поддержка многоядерности в JIT
Улучшено время парсинга XAML Особенно для UserControls и ResourceDictionaries
Добавлена поддержка 64-bit
Оптимизация задержек в сети (network latency)
90% прирост производительности в сценариях ClientHttpWebRequest
Аппаратное ускорение отрисовки у Internet Explorer 9 в безоконном
режиме Используется новое SurfacePresenter API
Другие улучшения
Доступнка поддержка WS-Trust в WCF
Поддержка Windows Azure
Поддержка In-browser HTML
Автоматизированные тесты UI
Улучшенная поддержка профилирования Память
CPU
Thread contention
А также другие мелкие улучшения во многих “уголках” продукта
Векторная печать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");
Векторная печать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
3D
•ПОЧЕМУ 3D• Одно из главных требований клиентов (третье в
списке на user voice)• Шаг вперед в плане визуализации,
производительность и интерактивность• Современные устройства готовы к 3D
• В ОСНОВЕ ЛЕЖИТ XNA
3D
Результат Структура проекта
3D
ДЕМО
Изменения в работе с Media
Улучшено управление батареей Никаких скринсейверов в полноэкранном режиме
Поддержка дистанционного управления
Аппаратное декодирование; больше GPU H.264 видео теперь декодируется аппаратно
В Beta отсутствует DRM и поддержка Mac
Поддержка 1080p В сочетании с GPU, вы можете просматривать 1080p видео на нетбуках и планшетах
Изменения в Media
Управление скоростью проигрывания (Trick Play)
Передачи аудио-данных с малой задержкой (low-latency)
IIS Media Services 4 Теперь с поддержкой Windows Azure
Управление скоростью (Trick Play)
Позволяет управлять скоростью проигрывания в MediaElement
Позволяет замедлить или ускорить проигрывание
Умеет проигрывать видео в обратную сторону
Используйте PlaybackRate для указания скорости (-8, -4, -2, …, 0.5, 1.2,
1.4, 2, 4, 8)
Ограничения: Нужно задавать значения из кода, если это делать в XAML они сбрасываются при
старте приложения
Low-Latency Sounds
Поддержка low-latency звуков Raw данные (например wave файлы)
Использует XNA подход
Контроль громкости, частоты и стерео-направление звука в
пространстве
Используйте SoundEffect для загрузки wave файлов
Используйте SoundEffectInstance для проигрывания нескольких
экземпляров одного и того же аудио
Ограничения: Идентичны XNA: 8 или 16bit PCM, моно или стерео, 22.5, 44.1 или 48khz
Будущее Silverlight
Вы здесь
Но не забывайте смотреть сюда
Вопросы?
[email protected]@2j2e