Windows presentation foundation что это такое

Обновлено: 04.07.2024

Описание слайда:
Описание слайда:

Компиляция WPF приложений
При компиляции XAML файлы разбираются (parsed) и преобразуются в коды на языке BAML ( Binary Application Markup Language), которые встраиваются как ресурс в исполняемый файл.
Код BAML компактнее исходного XAML кода и при выполнении его загрузка выполняется быстрее, чем загрузка XAML файла.
При компиляции для каждого XAML файла создается файл с кодом на языке программирования, содержащий частичное (partial) объявление класса для элемента верхнего уровня в файле разметки.
В общем случае компиляция XAML файлов осуществляется в два прохода.
Сначала компилируются только те XAML файлы, которые не содержат ссылки на локально-определенные типы (т.е. типы, определенные где-нибудь в данном проекте), так как они существуют только в виде исходного кода и еще не были скомпилированы.
XAML файлы со ссылками на локально-определенные типы компилируются при втором проходе компилятора.
Вся необходимая для работы MSBuild информация об исходных файлах, ссылках на зависимые сборки и конфигурация приложения находится в файлах проекта MSBuild - XML файлах, подчиняющихся MSBuild schema.

Описание слайда:

XML (EXtensible Markup Language )
XML – простой гибкий текстовый формат, который используется как основа для создания языков разметки для публикации документов и обмена данными.
Стандарт XML издан в виде рекомендаций консорциума всемирной паутины ( World Wide Web Consortium - W3C) – международной организации, которая занимается технологическими стандартами для всемирной паутины.

Документ XML состоит из элементов.
Элементы документа могут быть вложенными, но не могут пересекаться. Таким образом, элементы документа образуют дерево.
Каждый документ XML должен иметь один и только один корневой элемент.
Элементы могут содержать атрибуты , представляющие собой пары имя-значение.

Описание слайда:

Элементы XML
Каждый элемент документа должен иметь имя.
Имя элемента - это строка символов, которая начинается с подчеркивания или буквы, и состоит только из букв, цифр, символов подчеркивания (underscore), дефисов (hyphen) и точек (period). Имена элементов чувствительны к регистру.
Каждый элемент начинается с открывающего тэга и заканчивается закрывающим тэгом. Все, что находится между открывающим и закрывающим тэгом, называется содержимым (content) элемента.
Открывающий тэг имеет вид
< elementName>
или (для элемента с атрибутами)
<elementName att1Name="att1Value" att2Name="att2Value”>
Закрывающий тэг имеет вид </ elementName > .
Элемент может быть пустым. Пустой элемент может содержать атрибуты. Для пустого элемента допустима форма с пустым тэгом (empty tag)
<elementName att1Name="att1Value" att2Name="att2Value”/>

Описание слайда:

Данные элемента XML
Текстовые данные XML-элемента представляют собой либо символьные данные (CDATA), либо анализируемые символьные данные, либо их комбинацию.
Можно вставить символы Unicode в виде кодов символа в десятичном или шестнадцатиричном формате (character references ), используя синтаксис
Определены пять подстановочных строк (entity references ), которые можно использовать в самом документе вместо символов угловых скобок <> и символа слэш /, чтобы XML-анализатор не трактовал их как управляющие символы языка разметки.

Описание слайда:

Разделы CDATA
Все символы, которые находятся между комбинацией символов <![CDATA[ и ]]> трактуются XML анализатором как содержимое, не включающее символов разметки. Все остальные данные – это анализируемые символьные данные, которые XML-анализаторы интерпретируют как язык разметки.
Подстановочные строки (character references) не работают внутри разделов CDATA.
Разделы CDATA не могут быть вложенными.
Комментарии
Комментарии – любая текстовая информация, размещенная между символами <!-- и -->.
Комментарии можно разместить внутри пролога документа, в содержимом документа или после документа.
Комментарии не могут появиться внутри значений атрибутов документа или внутри тэгов.

Описание слайда:

Атрибуты XML
Элемент может иметь атрибуты. Атрибуты состоят из пар имя-значение.
<elementName att1Name="att1Value" att2Name="att2Value” … </elementName >
Имена атрибутов подчиняются тем же требованиям, что и имена элементов.
Атрибуты размещаются в открывающем тэге элемента. Число атрибутов элемента не ограничено. Пустой элемент может содержать атрибуты.
Значение атрибута заключается в одинаковые кавычки – простые или двойные. Для разных атрибутов можно использовать разные кавычки. Внутри двойных кавычек можно использовать одинарные без использования &quot; и наоборот.
Атрибуты должны иметь как имя, так и значение.
Внутри атрибутов можно использовать entity references и character references, но нельзя использовать разделы CDATA.
Порядок определения атрибутов может не сохраняться XML-анализатором.
XML-анализаторы не сохраняют число пробелов в значениях атрибутов.

Описание слайда:

Пространства имен XML
Чтобы избежать конфликтов при использовании элементов с одинаковыми именами, в документе можно определить пространства имен.
Пространство имен определяется с помощью атрибута xmlns c префиксом или без него.
Для пространств имен обычно используются URI (Uniform Resource Identifier). URI не обязан ссылаться на реально существующий объект.
Пространство имен по умолчанию задается атрибутом xmlns без префикса. Элемент, в котором определено пространство имен по умолчанию, и все его дочерние элементы автоматически относятся к этому пространству имен, если явно не указано другое пространство имен.
Объявление пространства имен с префиксом имеет вид xmlns:имя=URI
Имя задает префикс пространства имен.
Префикс можно использовать как в том элементе, в котором он определен, так и в его дочерних. Атрибут не помещается автоматически в то же пространство имен, что и содержащий его элемент.
Пространство имен действует только в пределах того элемента, атрибутом которого является его декларация.

Описание слайда:

Схема документа XML
Схема документа (schema ) определяет допустимую структуру документа –формальные спецификации имен элементов документа, определяющие допустимые имена элементов и их комбинации, отношения дочерний-родительский между элементами документа , последовательность, в которых могут появиться дочерние элементы, и их число.
Для схемы документа используется один из языков описания структуры XML документа.
Консорциум W3C рекомендует использовать как стандарт - XML Schema Definition (XSD) – язык на основе XML для описания схем XML-документов.
Файл, содержащий XML Schema, обычно имеет расширение «.xsd» (XML-schema-definition).
Документ называется well-formed, если он корректен с точки зрения синтаксиса XML.
Документ называется valid, если его структура согласуется со схемой документа.

Описание слайда:

Модель данных документа XML
После проверки документа на соответствие XML Schema программа может создать модель данных документа, включающую
словарь (названия элементов и атрибутов) ;
модель содержания (отношения между элементами и атрибутами и их структура) ;
типы данных.
Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти объект, соответствующий структуре XML-документа.

Описание слайда:
Описание слайда:

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

Если при создании традиционных приложений на основе WinForms за отрисовку элементов управления и графики отвечали такие части ОС Windows, как User32 и GDI+, то приложения WPF основаны на DirectX . В этом состоит ключевая особенность рендеринга графики в WPF: используя WPF, значительная часть работы по отрисовке графики, как простейших кнопочек, так и сложных 3D-моделей, ложиться на графический процессор на видеокарте, что также позволяет воспользоваться аппаратным ускорением графики.

Преимущества WPF

Что вам, как разработчику, предлагает WPF?

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

Новые возможности, которых сложно было достичь в WinForms, например, создание трехмерных моделей, привязка данных, использование таких элементов, как стили, шаблоны, темы и др.

Хорошее взаимодействие с WinForms , благодаря чему, например, в приложениях WPF можно использовать традиционные элементы управления из WinForms.

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

Аппаратное ускорение графики - вне зависимости от того, работаете ли вы с 2D или 3D, графикой или текстом, все компоненты приложения транслируются в объекты, понятные Direct3D, и затем визуализируются с помощью процессора на видеокарте, что повышает производительность, делает графику более плавной.

Создание приложений под множество ОС семейства Windows

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

Также стоит учитывать, что по сравнению с приложениями на Windows Forms объем программ на WPF и потребление ими памяти в процессе работы в среднем несколько выше. Но это с лихвой компенсируется более широкими графическими возможностями и провышенной производительностью при отрисовке графики.

Архитектура WPF

Схематически архитектуру WPF можно представить следующим образом:

Архитектура WPF

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

PresentationCore.dll : содержит все базовые типы для большинства классов из PresentationFramework.dll

WindowsBase.dll : содержит ряд вспомогательных классов, которые применяются в WPF, но могут также использоваться и вне данной платформы

Unmanaged API используется для интеграции вышележащего уровня с DirectX:

milcore.dll : собственно обеспечивает интеграцию компонентов WPF с DirectX. Данный компонент написан на неуправляемом коде (С/С++) для взаимодействия с DirectX.

WindowsCodecs.dll : библиотека, которая предоставляет низкоуровневую поддержку для изображений в WPF

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

Здесь также на одном уровне находится библиотека user32.dll . И хотя выше говорилось, что WPF не использует эту библиотеку для рендеринга и визуализации, однако для ряда вычислительных задач (не включающих визуализацию) данная библиотека продолжает использоваться.

Существует две реализации WPF:

Этот обзор предназначен для новичков: в нем рассматриваются ключевые возможности и понятия WPF. Сведения о создании приложения WPF см. в разделе Учебник: создание нового приложения WPF.

Программирование с помощью WPF

  • Создание экземпляров классов
  • Настройка свойств
  • Вызов методов
  • Обработка событий

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

Разметка и код программной части

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

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

разметку

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

В приведенном ниже примере XAML используется для определения внешнего вида окна, содержащего одну кнопку.

Этот код XAML определяет окно и кнопку с помощью элементов Window и Button . Каждый элемент настраивается с помощью атрибутов, например атрибута Window элемента Title , определяющего текст заголовка окна. Во время выполнения WPF преобразует элементы и атрибуты, определенные в разметке, в экземпляры классов WPF. Например, элемент Window преобразуется в экземпляр класса Window , свойство Title которого является значением атрибута Title .

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

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

Файл с кодом программной части

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

Обновленная разметка определяет пространство имен xmlns:x и сопоставляет ее со схемой, которая добавляет поддержку для типов кода программной части. Атрибут x:Class используется для связывания класса кода программной части с этой конкретной разметкой XAML. С учетом того, что этот атрибут объявлен в элементе <Window> , класс кода программной части должен наследовать от класса Window .

Метод InitializeComponent вызывается из конструктора класса кода программной части для слияния пользовательского интерфейса, определенного в разметке, с классом кода программной части. ( InitializeComponent создается при построении приложения, поэтому реализовывать его вручную не нужно.) Сочетание x:Class и InitializeComponent гарантирует правильную инициализацию реализации при создании.

На рисунке ниже показан результат нажатия на кнопку.

Ввод данных и команды

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

Приложения часто предъявляют сложные требования к вводу. WPF предоставляет систему команд, которая отделяет действия по вводу данных пользователем от кода, реагирующего на эти действия. Система команд позволяет нескольким источникам вызывать одну и ту же логику команд. Например, рассмотрим распространенные операции редактирования, используемые различными приложениями: Копировать, Вырезать и Вставить. Эти операции можно вызывать путем выполнения различных действий пользователя, если они реализованы с помощью команд.

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

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

СОДЕРЖАНИЕ

Обзор

WPF использует XAML , язык на основе XML , для определения и связывания различных элементов интерфейса. Приложения WPF могут быть развернуты как автономные настольные программы или размещены как встроенный объект на веб-сайте. WPF стремится унифицировать ряд общих элементов пользовательского интерфейса , таких как 2D / 3D-рендеринг, фиксированные и адаптивные документы , типографика , векторная графика , анимация во время выполнения и предварительно обработанные мультимедиа. Затем эти элементы могут быть связаны и ими можно управлять на основе различных событий, взаимодействий с пользователем и привязок данных .

Библиотеки времени выполнения WPF включены во все версии Microsoft Windows, начиная с Windows Vista и Windows Server 2008 . Пользователи Windows XP SP2 / SP3 и Windows Server 2003 могут дополнительно установить необходимые библиотеки.

Microsoft Silverlight предоставляет функциональные возможности, которые в основном являются подмножеством WPF для предоставления встроенных веб-элементов управления, сопоставимых с Adobe Flash . 3D-рендеринг во время выполнения поддерживался в Silverlight начиная с Silverlight 5.

Функции

Direct3D

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

Акцент WPF на векторной графике позволяет масштабировать большинство элементов управления и элементов без потери качества или пикселизации , тем самым повышая доступность. За исключением Silverlight, интеграция Direct3D позволяет оптимизировать 3D-рендеринг. Кроме того, интерактивный 2D-контент может быть изначально наложен на 3D-поверхности.

Связывание данных

  • WPF имеет встроенный набор служб данных, позволяющий разработчикам приложений связывать данные в приложениях и управлять ими. Он поддерживает четыре типа привязки данных:
    1. один раз: когда клиент игнорирует обновления на сервере.
    2. один способ: когда клиент имеет доступ к данным только для чтения.
    3. два способа: где клиент может читать и записывать данные на сервер
    4. один способ источника: когда у клиента есть доступ только для записи к данным
  • Запросы LINQ , включая LINQ to XML , также могут выступать в качестве источников данных для привязки данных.
  • Связывание данных не влияет на их представление. WPF предоставляет шаблоны данных для управления представлением данных.
  • Набор встроенных элементов управления предоставляется как часть WPF и содержит такие элементы, как кнопка, меню, сетки и список.
  • Свойства зависимости можно добавить к поведению или прикрепленным свойствам, чтобы добавить настраиваемые свойства привязки.
  • Мощная концепция WPF - это логическое отделение элемента управления от его внешнего вида.
    • Шаблон элемента управления можно переопределить, чтобы полностью изменить его внешний вид.
    • Элемент управления может содержать любой другой элемент управления или макет, что обеспечивает высокую степень управления композицией.

    Медиа услуги

    • WPF предоставляет интегрированную систему для создания пользовательских интерфейсов с общими мультимедийными элементами, такими как векторные и растровые изображения, аудио и видео. WPF также предоставляет систему анимации и систему рендеринга 2D / 3D.
    • WPF предоставляет примитивы форм для 2D-графики, а также встроенный набор кистей, перьев, геометрии и преобразований.
    • Возможности 3D в WPF - это подмножество полного набора функций, предоставляемого Direct3D. Однако WPF обеспечивает более тесную интеграцию с другими функциями, такими как пользовательские интерфейсы, документы и мультимедиа. Это позволяет иметь трехмерные пользовательские интерфейсы, трехмерные документы или трехмерные носители.
    • Поддерживаются наиболее распространенные форматы изображений: BMP, JPEG, PNG, TIFF, Windows Media Photo , GIF и ICON.
    • WPF по умолчанию поддерживает видеоформаты WMV , MPEG и некоторые файлы AVI , но поскольку под ним работает проигрыватель Windows Media , WPF может использовать все установленные для него кодеки.

    Шаблоны

    • В WPF вы можете определить внешний вид элемента напрямую через его свойства или косвенно с помощью шаблона или стиля. В простейшем случае стиль представляет собой комбинацию настроек свойств, которые могут быть применены к элементу пользовательского интерфейса с одним атрибутом свойства. Шаблоны - это механизм для определения альтернативного пользовательского интерфейса для частей вашего приложения WPF. В WPF доступно несколько типов шаблонов (ControlTemplate, DataTemplate, HierarchicalDataTemplate и ItemsPanelTemplate).

    Шаблоны управления

    • В основе всех элементов управления пользовательского интерфейса в WPF лежит новая модель композиции. Каждый элемент управления состоит из одного или нескольких «визуальных элементов». Эти визуальные субэлементы превращаются в иерархическое визуальное дерево с помощью WPF и, в конечном итоге, обрабатываются графическим процессором. Поскольку элементы управления WPF не являются оболочками для стандартных элементов управления Windows, их пользовательский интерфейс можно радикально изменить, не влияя на нормальное поведение элемента управления.
    • Каждый элемент управления в WPF имеет шаблон по умолчанию, который определяет его визуальное дерево. Шаблон по умолчанию создается автором элемента управления и может быть заменен другими разработчиками и дизайнерами. Заменяющий пользовательский интерфейс помещается в ControlTemplate.

    Шаблоны данных

    Анимации

    Визуализация

    • WPF может иметь собственный доступ к коду и API-интерфейсам Windows Imaging Component (WIC), что позволяет разработчикам писать кодеки изображений для своих конкретных форматов файлов изображений.

    Последствия

    Документы

    • WPF изначально поддерживает документы с разбивкой на страницы. Он предоставляет DocumentViewer класс, предназначенный для чтения документов с фиксированным макетом. В FlowDocumentReader классе предлагает различные режимы просмотра , например, на странице или прокручивать , а также перекомпоновки текста , если область просмотра изменяется.
    • По умолчанию поддерживает документы XML Paper Specification .
    • Поддерживает чтение и запись документов с разбивкой на страницы с использованием Open Packaging Conventions .

    Текст

    • WPF включает ряд функций отрисовки текста, которые не были доступны в GDI . Это первый программный интерфейс Microsoft, предоставляющий разработчикам программного обеспечения возможности OpenType , поддерживающий шрифты OpenType, TrueType и OpenType CFF ( компактный формат шрифтов).
    • Поддержка типографских функций OpenType включает:
    • Цифры старого стиля (например, части глифа располагаются ниже базовой линии текста)
    • качающаяся варианта
    • Фракции
    • Надстрочный и подстрочный индекс
    • Обоснование на уровне строки
    • Несколько базовых показателей
    • Контекстные и стилистические альтернативы

    Совместимость

    • Windows Forms также возможно за счет использования из ElementHost и WindowsFormsHost классов.

    Альтернативный ввод

    • WPF поддерживает функции, связанные с цифровыми чернилами .
    • WPF 4.0 поддерживает мультисенсорный ввод в Windows 7 и более поздних версиях .

    Доступность

    • WPF поддерживает Microsoft UI Automation, позволяя разработчикам создавать доступные интерфейсы.
    • Этот API также позволяет автоматическим тестовым сценариям взаимодействовать с пользовательским интерфейсом.

    После успеха языков разметки для веб - разработки, WPF представляет Extensible Application Markup Language ( XAML ; / г æ м əl / ), который основан на XML . XAML разработан как более эффективный метод разработки пользовательских интерфейсов приложений. Конкретное преимущество XAML для WPF заключается в том, что XAML является полностью декларативным языком, позволяющим разработчику (или проектировщику) описывать поведение и интеграцию компонентов без использования процедурного программирования . Хотя редко бывает, что все приложение будет полностью построено на XAML, внедрение XAML позволяет разработчикам приложений более эффективно участвовать в цикле разработки приложений. Использование XAML для разработки пользовательских интерфейсов также позволяет разделить модель и представление, что считается хорошим архитектурным принципом. В XAML элементы и атрибуты сопоставляются с классами и свойствами в базовых API.

    Архитектура

    Архитектура WPF. Синие элементы - это компоненты Windows; коричневые - это компоненты WPF.

    WPF предоставляет систему свойств для объектов, которые наследуются от DependencyObject , которая знает о зависимостях между потребителями свойства и может запускать действия на основе изменений свойств. Свойства могут быть либо жестко закодированными значениями, либо выражениями, которые представляют собой определенные выражения, которые приводят к результату. Однако в первоначальной версии набор поддерживаемых выражений закрыт. Значение свойств также может быть унаследовано от родительских объектов. Свойства WPF поддерживают уведомления об изменениях , которые вызывают связанное поведение всякий раз, когда изменяется какое-либо свойство некоторого элемента. Пользовательские поведения можно использовать для распространения уведомления об изменении свойства на набор объектов WPF. Это используется системой макета для запуска пересчета макета при изменении свойств, тем самым раскрывая декларативный стиль программирования для WPF, в соответствии с которым почти все, от установки цветов и позиций до анимации элементов, может быть достигнуто путем установки свойств. Это позволяет писать приложения WPF на XAML , который является декларативным языком разметки, путем привязки ключевых слов и атрибутов непосредственно к классам и свойствам WPF.

    Элементы интерфейса приложения WPF поддерживаются как класс Visual объектов. Визуальные объекты предоставляют управляемый интерфейс для дерева композиции, которое поддерживается уровнем интеграции мультимедиа (MIL). Каждый элемент WPF создает и добавляет в дерево один или несколько узлов композиции . Узлы композиции содержат инструкции по визуализации, такие как инструкции по вырезанию и преобразованию, а также другие визуальные атрибуты. Таким образом, все приложение представляется как набор узлов композиции, которые хранятся в буфере в системной памяти. Периодически MIL проходит по дереву и выполняет инструкции по рендерингу в каждом узле, таким образом компонуя каждый элемент на поверхности DirectX, которая затем отображается на экране. MIL использует алгоритм рисования , при котором все компоненты визуализируются от задней части экрана к передней, что позволяет легко достигать сложных эффектов, таких как прозрачность. Этот процесс рендеринга аппаратно ускоряется с помощью графического процессора. Дерево композиции кэшируется MIL, создавая графику сохраненного режима , так что любые изменения в дереве композиции нужно только постепенно сообщать в MIL. Это также освобождает приложения от управления перерисовкой экрана; MIL может это сделать самостоятельно, поскольку имеет всю необходимую информацию. Анимации могут быть реализованы как изменения дерева композиции, запускаемые по времени. На видимой для пользователя стороне анимации указываются декларативно, путем установки некоторого эффекта анимации для некоторого элемента через свойство и указания продолжительности. Код программной части обновляет определенные узлы дерева через Visual объекты, чтобы представить как промежуточные состояния в указанные интервалы времени, так и конечное состояние элемента. MIL автоматически отобразит изменения в элементе. Все приложения WPF начинаются с двух потоков: один для управления пользовательским интерфейсом, а другой фоновый поток для обработки отрисовки и перерисовки. Рендеринг и перерисовка осуществляется самим WPF без какого-либо вмешательства разработчика. Поток пользовательского интерфейса содержит диспетчер (через экземпляр DispatcherObject ), который поддерживает очередь операций пользовательского интерфейса, которые необходимо выполнить (в виде дерева Visual объектов), отсортированных по приоритету. События пользовательского интерфейса, включая изменение свойства, влияющего на макет, и возникающие события взаимодействия с пользователем помещаются в очередь в диспетчере, который вызывает обработчики событий. Microsoft рекомендует, чтобы обработчики событий обновляли свойства только для отражения нового содержимого для реагирования приложения, при этом новое содержимое создается или извлекается в фоновом потоке. Поток рендеринга выбирает копию визуального дерева и обходит дерево, вычисляя, какие компоненты будут видимы, и отображает их на поверхностях Direct3D. Поток рендеринга также кэширует визуальное дерево, поэтому необходимо сообщать только изменения в дереве, что приведет к обновлению только измененных пикселей. WPF поддерживает расширяемую модель макета. Макет разделен на два этапа: Измерение ; и устроить . Мера фаза рекурсивно вызывает все элементы и определяет размер , который они будут принимать. В Аранжировки фазе, дочерние элементы рекурсивно расположены их родители, ссылаясь на алгоритм компоновки модуля макета в использовании.

    Инструменты

    Для разработки приложений Windows Presentation Foundation доступен ряд средств разработки.

    Инструменты Microsoft

    Сторонние инструменты

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

    Модель развертывания WPF предлагает варианты как автономных, так и браузерных приложений XAML (XBAP, произносится как «ex-bap»). Модель программирования для создания приложений любого типа аналогична.

    Автономные приложения - это те, которые были локально установлены на компьютере с помощью такого программного обеспечения, как ClickOnce или Windows Installer (MSI), и которые запускаются на рабочем столе. Автономные приложения считаются полностью доверенными и имеют полный доступ к ресурсам компьютера.

    Internet Explorer

    Поддержка Firefox

    Microsoft Silverlight

    Silverlight (под кодовым названием WPF / E) - устаревший плагин для кроссбраузерности, который содержал технологию на основе WPF (включая XAML), которая предоставляла такие функции, как видео, векторная графика и анимация, для нескольких операционных систем, включая Windows 7 , Windows Vista , Windows XP. и Mac OS X . Microsoft разрешила ограниченному числу сторонних разработчиков работать над портами для определенных дистрибутивов Linux . В частности, он был предоставлен как надстройка для Mozilla Firefox , Internet Explorer 6 и выше, Google Chrome 42 и ниже и Apple Safari .

    Содержание

    Особенности технологии [ ]

    Также существует урезанная версия WPF/E , она же известна как Silverlight.

    Использование разметки [ ]

    Средства разработки [ ]

    WPF предоставляет широкий спектр возможностей по созданию интерактивных настольных приложений:

    Привязка данных [ ]

    Помимо основного класса Binding в WPF реализовано еще несколько механизмов привязок:

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

    Стили [ ]

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

    Если стиль задается в ресурсах (например в словаре ресурсов), то можно использовать атрибут x:Key для указания уникального ключа. Затем в элементе управления, к которому необходимо применить стиль, нужно использовать расширение разметки StaticResource для связывания с этим стилем. Если использовать этот прием, то стили не будут нагромождать разметку.

    Шаблоны элементов управления [ ]

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

    Простой пример круглой кнопки:

    Шаблоны данных [ ]

    В отличие от шаблонов элементов управления, задаются для определенного контекста данных (который в блочных элементах управления задается через свойство DataContext, а в списковых через ItemsSource). Сам шаблон данных представлен классом DataTemplate. Для обозначения типа данных, к которому необходимо применить шаблон, используется свойство DataType.

    Ресурсы [ ]

    Система ресурсов позволяет объединять шаблоны, стили, кисти, анимацию и многие другие интерактивные элементы, что существенно упрощает работу с ними. Ресурсы задаются в свойстве Resources класса FrameworkElement, от которого унаследованы все элементы управления, панели компоновки и даже класс Application. Это позволяет создавать многоуровневую систему ресурсов:

    • ресурсы внутри объекта - действительны только для этого объекта
    • ресурсы внутри панели компоновки (например Grid) - позволяет задать границу контекста ресурсов на уровне этой панели
    • ресурсы внутри окна Window - если в приложении используется несколько окон, то ресурсы одного окна не будут доступны ресурсам другого окна
    • ресурсы приложения - доступны повсеместно (как правило задаются в отдельном словаре ресурсов)

    Графика [ ]

    WPF представляет обширный, масштабируемый и гибкий набор графических возможностей:

    • Графика, не зависящая от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, который составляет 1/96 часть дюйма независимо от фактического разрешения экрана.
    • Дополнительная поддержка графики и анимации. WPF упрощает программирование графики за счет автоматического управления анимацией. Разработчик не должен заниматься обработкой сцен анимации, циклами отрисовки и билинейной интерполяцией
    • Аппаратное ускорение. Графическая система WPF использует преимущества графического оборудования, чтобы уменьшить использование ЦП.
    Двухмерная графика [ ]

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

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

    Трехмерная графика [ ]

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

    Читайте также: