Pull to refresh

WPF 4

Reading time 11 min
Views 31K
Original author: Scott Gu
Нововведения в WPF 4image

WPF (Windows Presentation Foundation) — один из компонентов ядра .NET Framework, который позволяет разработчикам создавать богатые, различные Windows приложения. WPF 4 содержит важные улучшения в продуктивности, производительности, возможностей — в частности в областях: элементов управления, XAML, текста, графики, интеграции в Windows 7 (мультитач, интеграция в панель задач, и т.п.), основных принципов работы, развертывания. Это только первая статья из серии, которая описывает нововведения.

Я напишу отдельную статью, которая опишет важные изменения, которые грядут в WPF и Silverlight конструкторах в VS 2010.

Элементы управления


Элементы управления для построения богатых приложенийimage

WPF 4 добавляет разнообразные элементы управления, чтобы создавать бизнес-приложения еще быстрее и проще. Новый, богатый набор элементов управления включает такие LOB-необходимые элементы управления, как DataGrid, DatePicker и Calendar. Данные новые элементы управления на 99% поведенчески и API совместимые с их Silverlight аналогами, позволяя разработчику создавать совместимые веб- и клиентские приложения, оптимизируя технологический процесс благодаря повторному использованию Silverlight и WPF кода.

Хитрые приёмы

Мы также выпускаем набор из восьми элементов управления, называемый «WPF Bag O’ Tricks». Набор включает в себя: AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMapPanel.

Windows 7 и элемент управления Office Ribbon

Новый WPF элемент управления Ribbon будет доступен, почти сразу, после релиза WPF 4. Он поддерживает все стандартные возможности, с которыми знаком конечный пользователь: закладки и группы, динамическое изменение размеров, панель быстрого доступа, меню приложения, закладками, зависящими от контекста, горячими клавишами и многое другое.

image

WPF версия Ribbon будет обладать полноценной расширяемостью для соответствия изменениям в руководстве в следующих релизах. Ограниченная CTP версия доступна уже сегодня.

Графика


Кэшированное построение приложений
image
Огромный выигрыш в производительности возможен с новой возможностью WPF4 — Cached Composition, которая позволяет приложениям кэшировать произвольные содержимое, включая «живые» и полностью интерактивные элементы управления, векторную геометрию, растровые изображения, хранящиеся в видео памяти и т.п. Поместив единожды элементы в кэш, он могут быть произвольно преобразованы, анимированы, управляемы, к ним можно применить Effects, без нужды перерисовывать закэшированные элементы.

Все это приводит к сбережени CPU и GPU от перерисовки содержимого и позволяет GPU перерисовывать напрямую из кэша. Кэш понимает «грязные» области, поэтому мигающй курсор в закэшированном текстовом блоке, например, должен будет перерисовать только курсор между фреймами. Появилась даже новая кисть, которая использует «умный» кэш, фактически это VisualBrush с улучшенной производительностью.

Поддержка третьих пиксельных шейдеров

WPF основан на поддержке популярного ShaderEffect, впервые представленного в WPF 3.5 SP1, который позволяет создавать эффекты, используя пиксельные шейдеры 3-ей версии. PS 3.0 более сложный, чем PS 2.0, что дает возможность создавать неотразимые эффекты на поддерживаемом оборудовании.

LayoutRounding

WPF 4 переняла свойство UseLayoutRounding, представленное в Silverlight 2. Движок макета зачастую рассчитывает подпиксельные координаты расположения. Это приводит к артефактам при прорисовке, когда элемент расположен на стыке подпиксельных границ и сглажен над несколькими физическими пикселями.

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

Функции для облегчения анимации
image
Дискретная, линейная и сплайновая анимация уже поддерживается предыдущими версиями WPF. WPF 4 представляет новый концепт «Easing Functions», которые позволяют разработчикам создавать различную анимацию. Например, пружинистые движения или добавить упреждение в анимацию. Функции упрощения (Easing Functions) определяют способ анимации от начала и до конца. Встроенные функции упрощения предоставляют спектр режимов в анимации: круговой, экспоненциальной, эластичной и пружинистой. Функции упрощения спроектированы легко расширяемыми, позволяя разработчикам создавать собственные. Благодаря данному нововведения, дизайнеры могут без усилий создавать плавную и органичную анимацию.

CleartypeHint

Новое добавленное свойство CleartypeHint позволяет разработчикам приложений включить высококачественную прорисовку Cleartype текста, когда во многих ситуациях он был заранее отключен. Такие ситуации включают в себя текст в наслоившихся окнах, текст в VisualBrush, DrawingBrush, BitmapCacheBrush и везде, где представление промежуточной прорисовки будет предыдущим результатом в черно-белом тексте.

Текстовый стек


Новый стек для прорисовки текста

WPF стек для прорисовки текста был полностью заменен, изменение, которое приводит к существенным усовершенствованиям в чёткости прорисовки текста, способности к изменению настроек и поддержки международных языков. Данный новый текстовый стек поддерживает оптимизированный символьный слой, чтобы показывать текст с сопоставимой резкостью текста в Win32/GDI:

image

Так же новый стек поддерживает явно выбираемые режимы прорисовки текста: aliased, grayscale, ClearType.

image

Новый текстовый стек позволяет оптимизировать текстовую привязку для анимации и статики. Вдобавок, новый текстовый стек поддерживает шрифты с встроенными картами изображений, что позволяет многим восточно-азиатским шрифтам прорисовываться с чёткостью, к которой привыкли пользователи Win32.

BindableRun

С выпуском WPF, Run.Text был простым CLR-свойством. Это значит, что Run.Text испытывает недостаток во всех преимуществах системы зависимостей свойств в WPF, самое значительное из которых — привязка. В WPF 4 мы конвертировали Run.Text в зависимое свойство, позволяющее разработчикам впервые использовать, привязанный к данным, Run. Больше информации об этом тут.

Собственные словари

WPF включает в себя проверку орфографии, которая до 4-ой версии использовала словари предоставляемые ОС. Это было большой проблемой для приложений, которые используют специфическую терминологию, данные приложения надоедали постоянными уведомлениями о неправильном написании. WPF 4 представляет API, которое позволяет приложениям добавлять слова в словари, используемые WPF для проверки орфографии. Более подробно об этом тут.

Кисть выделения и каретки

В порыве разрешить разработчикам настраивать богатый вид WPF приложений, теперь вы можете изменить кисть для выделения текста и каретки через два простых свойства — SelectionBrush и CaretBrush:

image

Windows 7


Поддержка мультитач
image
С представлением мультитач ввода и поддержки манипулированием обработки, WPF 4 предоставляет отличный способ добавить пикантности в ваше клиентское приложение в Windows 7. Появились новые события манипуляции и инерции:
  • Мультитач события Manipulation, Inertia (Pan, Zoom, Rotate) над UIElement
  • Простые мультитач события (Up, Move, Down) над UIElement, UIElement3D и ContentElement
  • Захват нескольких элементов управления
  • Поддержка мультитач в ScrollViewer
  • Расширяемость сенсорных устройств
  • Совместимость с Surface SDK в будущем


Интеграция c Windows 7 интерфейсом

WPF 4 предоставляет новый и ключевой функционал в Windows 7 для WPF разработчиков. Новая панель задач захламлена и может передавать больше информации. Aero-пиктограммы поддерживают пользовательские команды. Jump List обеспечиваетт доступ к контекстуальному запуску задач и файлов для приложения.

WPF 4 интегрируется с функциональностью Windows 7 Jump List, включая:
  • Задачи
  • Элементы
  • Список недавно открытых и часто используемых элементов
  • Собственные категории
imageИнтеграция с панелью задача Windows 7, включая:
  • Индикатор прогресса
  • Иконки наложения
  • Кнопки с миниатюрами с поддержкой команд
  • Текст описания для миниатюр в менеджере окон

В Windows 7, панель задач была полностью переработана для уменьшения захламления и улучшения помощи пользователю в выполнении задач в несколько кликов. WPF 4 предоставляет интеграцию с панелью задач Windows 7 в XAML, позволяя приложениям выводить полезную информацию пользователю через иконки в панели задач, используя иконки наложения, индикатор прогресса, панелью иконок, текстом описания иконок и миниатюр окон в панели задач.
Так же появился новый класс TaskbarItemInfo, который расширен, как свойство зависимостей. Он содержит в себе все новые особенности панели задач в Windows 7.

Иконка наложения (Icon Overlays)image

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

Индикатор прогресса

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

Панели миниатюр (Thumbnail Toolbars)
image
Панели миниатюр предоставляют доступ к ключевым команд для приложения без надобности пользователю активировать или разворачивать окно приложения. Данный функционал позволяет разработчикам приложений встраивать элементы управления приложением непосредственно в миниатюру предпросмотра окна. Приложение может включать, отключать или скрывать кнопки с панели миниатюры в зависимости от текущего состояния.

Основы WPF


Новый движок XAML/BAML парсера

В WPF 4 был заменена реализация XamlReader.Load(), BAML-загрузка, функциональность Control & DataTemplate новым движком построенным на основе нового System.Xaml.dll. Как часть стараний, мы исправили много ошибок и добавили много новых функциональных улучшений. Пользователи XamlReader.Load() могут воспользоваться несколькими новыми особенностями языка в XAML2009, такие как поддержка генерик-типов. MarkupExtensions и TypeConverters могут уже сейчас получать доступ к многим сервисам через создания объектного графа, позволяя выполнять больше сценариев, как доступ к Root-объекту. Будет еще проще создать инструменты для анализа и манипулирования XAML с новыми низкоуровневыми API, предоставляемые в System.Xaml.dll.

Поддержка привязки данных для DLR

В отличии от CLR классов, члены динамических объектов объявлены в runtime. DynamicObject является новым абстрактным классом в .NET Framework 4, который позволяет разработчикам легко реализовывать IDynamicMetaObjectProvider. С поддержкой DLR в C# с новым ключевым словом ‘dynamic’, мы ожидаем некоторые реализации библиотеки для перехода к использованию DynamicObject и IDynamicMetaObjectProvider, как стандартного способа для расширения объявленных в runtime свойств и члегов объектов. Поддержка привязки данных для IDynamicMetaObjectProvider в WPF 4 позволяет использовать обычные свойства для доступа к динамическим свойствам.

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

Visual State Manager (VSM)

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

image

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

HTML-XBAP Script Interop

WPF 4 обеспечивает средства для прямого общения между XBAP и скриптами в размещенной HTML странице (где XBAP загружен в HTML фрейм или элемент IFRAME). XBAP может получить глубокий доступ в HTML DOM, включая ActiveX элементы управления, встроенные в содержащей HTML странице, а также обрабатывать события DOM.

WPF открывает главный объект скрипта в размещаемом фрейме. Это динамический объект, который представляет объект окна фрейма, а также любые функции или глобальные переменные в скрипте на HTML странице. Из него, приложение может вызывать функции скрипта напрямую или обращаться к HTML DOM. Данная функциональность доступна в partial-trust XBAP и во всех поддерживаемых версиях Internet Explorer и Firefox.

Виртуализация UIAutomation

WPF представил виртуализированне элементы управления в предыдущих версиях. Тем не менее, не было стандартизированного способа для клиента автоматизации взаимодействия с виртуализированным элементом управления. В WPF 4 было добавлено два новых шаблона для элементов управления — ItemsContainerPattern и VirtualizedItemPattern, для поддержки доступа и взаимодействия с виртуализированными элементами. ItemsContainerPattern используется для получения доступа к виртуализированным элементам управления и для поиска виртуализированного элемента, а VirtualizedItemPattern для реализации виртуализированных элементов.

Шаблон SynchronizedInput

Это еще один UIA шаблон проектирования элемента управления, добавленные в WPF 4. Данный шаблон используется клиентами автоматизации, чтобы отслеживать направление заданных событий ввода в корректный элемент WPF фреймворком. Данный шаблон имеет три события автоматизации: InputReachedTargetEvent, InputReachedOtherElementEvent и InputDiscardedEvent, чтобы сообщать, обработан ли ввод.

Развертывание


.NET Framework 4 Client Profile

Для оптимизации размера развертывания и времени .NET 4 фреймворка, существует компактная версия .NET, которая является подмножеством полного .NET 4 фреймворка, называемая .NET Framework 4 CLient Profile. Текущий размер дистрибутива .NET Framework 4 Client Profile, примерно, 30 МБ. Полная версия Microsoft .NET Framework 4 — это немного расширенная версия Client Profile.

Client Profile содержит функциональность для большинства распространенных настольных приложений (включая Windows Forms и WPF приложения), следовательно ожидается, что большинство разработчиков будут ориентироваться именно на эту версии, а не на полную. По этой причине, большинство шаблонов клиентских проектов Visual Studio 2010 Beta 2 ориентированы на .NET Framework 4 Beta 2 Client Profile по умолчанию.

В отличии от .NET Framework 3.5 SP1 Client Profile, 4 версия поддерживает все операционные системы и платформы, в том числе, поддерживаемые полной версией: Windows Vista, Windows XP, Windows Servers 2003 и 2008, Windows 7, как x86, так и x64.

Вы можете просматривать и изменять версию фреймворка, на которую ориентируетесь разработке, открыв свойства проекта, а далее выбрав закладку «Application». Далее выбрать в выпадающем списке “Target framework” полную версию или Client Profile. В «Publish» свойствах проекта вы также можете выбрать необходимую версию для ClickOnce развертывания. В Beta2, VS2010 автоматически выбирает правильный профиль, в зависимости от вашей первичной направленности проекта:

image

Тоже самое диалоговое окно вы увидите при создании “Setup and Deployment” проекта (“Add New Project”/“Other Project Types”). NET4 Client Profile выделен в списке по умолчанию.

Улучшения в .NET4 Client Profile по отношению к .NET 3.5 SP1 Client Profile

Не смотря на то, что концепция Client Profile не нова и была представлена в .NET Framework 3.5 SP1, 4 версия Client Profile содержит несколько важных улучшений.

.NET Framework 4 Client Profile (Новый) .NET Framework 3.5 SP1 Client Profile
Поддерживаемые ОС Поддерживается на всех платформах и ОС, которые поддерживает .NET Framework (исключая IA64 и Server Core роль в W2K8) Поддерживается только на Windows XP 32-бит, на которых больше не установлена никакая версия .NET Framework.
Распространение Стандартное или загрузка с веб Загрузка только с веб
Добавление/удаление компонентов программы Полная версия фреймворка состоит из двух частей — Client Profile и «Extended». Это дает нам 2 пункта в «Добавлении/удалении программ».

Если вы установили полную версию фреймворка, вы можете переключится на Client Profile, удалив «Extended»
Только один пункт в Добавлении/удалении программ
Visual Studio Улучшенная поддержка ориентации на Client Profile в Visual Studio 2010.

По умолчанию, большинство клиентских проектов в Visual Studio Beta2 ориентированы на .NET4 Client Profile.
Единственная галочка в Visual Studio SP1 в закладке настройке проекта «Application», для .NET 3.5 проектов. Поддержка Client Profile «из коробки» в VS 2008 не доступна.
Возможности Включает новые возможности .NET 4 (Managed Extensibility Framework (MEF), C# 4 Dynamic Keyword и т.д.), как и представленные ранее в полной версии .NET 3.5 (Speech, WPF Spell Check и т.д.) Подмножество возможностей в полной версии .NET 3.5 SP1


Установка .NET 4 фреймфорка не требует наличия предыдущих версий установленных в системе. Следовательно, установка .NET 4.0 Client Profile пройдет в разы быстрее, чем .NET 3.5 SP1 Client Profile.

Full trust развертывание XBAP приложений

Начиная с WPF 4, запрос на поднятие привилегий ClickOnce также включен для XAML Browser Applications (XBAPs) для интранет и доверительных зон, делая резвертывание еще проще для full-trust XBAP приложений. Для тех приложений, которые требуют повышенных прав безопасности, чем у минимальных прав доступа кода (CAS), пользователь должен выбрать «Запуск» при запросе поднятия привилегий ClickOnce, для запуска XBAP с требуемыми правами.

Заключение


Как видно из вышеизложенного, появилось масса нововведений в WPF 4.0. Ниже представлено несколько ссылок и ресурсов, где вы можете более детально изучить новые возможности:
Tags:
Hubs:
+30
Comments 26
Comments Comments 26

Articles