Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра информатики А.А. Волосевич ТЕХНОЛОГИЯ WINDOWS PRESENTATION FOUNDATION Курс лекций для студентов специальности 1-40 01 03 Информатика и технологии программирования
Минск 2012
1. | Общая характеристика технологии WPF. | 3 | |
2. | Простейшее приложение WPF. | 4 | |
3. XAML . | 6 | ||
4. | Базовые концепции WPF . | 12 | |
5. | Варианты организации приложений WPF . | 19 | |
6. | Компоновка. | 26 | |
7. | Обзор элементов управления WPF. | 37 | |
8. | Ресурсы. | 51 | |
9. | Привязка данных . | 54 | |
10. | Работа с графикой . | 66 | |
11. | Стили и триггеры . | 81 | |
12. | Шаблоны . | 87 | |
13. | Списки и представления коллекций. | 92 | |
Литература . | 105 |
1. Общая характеристика технологии WPF Windows Presentation Foundation (WPF) – это технология для построения клиентских приложений Windows, являющаяся частью платформы .NET. WPF разработана как альтернатива технологии Windows Forms. Ниже перечислены основные особенности технологии WPF. 1. Собственные методы построения и рендеринга элементов.
Лекция 1: Основы Windows Presentation Foundation
В Windows Forms классы для элементов управления делегируют функции отображения системным библиотекам, таким как user32.dll. В WPF любой элемент управления полностью строится (рисуется) самой WPF. Для аппаратного ускорения рендеринга применяется технология DirectX (рис. 1).
Приложение на основе | Приложение на основе | |
Windows Forms | WPF | |
Рендеринг | Рендеринг | Любой |
стандартных | графики | рендеринг |
элементов | ||
управления | ||
Библиотека User32 | ||
Direct3D | ||
Библиотеки GDI и GDI+ | ||
Графический драйвер | ||
Операционная система | ||
Рис. 1. Рендеринг в приложениях на основе Windows Forms и WPF. |
2. Независимость от разрешения устройства вывода. Для указания раз- меров в WPF используется собственная единица измерения, равная 1/96 дюйма. Кроме этого, технология WPF ориентирована на использование не пиксельных, а векторных примитивов. 3. Декларативный пользовательский интерфейс. В WPF визуальное со- держимое окна можно полностью описать на языке XAML.
Видеокурс Windows Presentation Foundation (WPF). Урок 1. Введение в WPF и XAML
Это язык разметки, основанный на XML. Так как описание пользовательского интерфейса отделено от кода, дизайнеры могут использовать профессиональные инструменты (например, Microsoft Expression Blend), чтобы редактировать файлы XAML, улучшая внешний вид приложения. Применение XAML является предпочтительным, но не обязательным – приложение WPF можно конструировать, используя только код. 4. Веб-подобная модель компоновки. WPF поддерживает гибкий визу- альный поток, размещающий элементы управления на основе их содержимого.
В результате получается пользовательский интерфейс, который может быть адаптирован для отображения динамичного содержимого. 5. Стили и шаблоны. Стили стандартизируют форматирование и позволяют повторно использовать его по всему приложению. Шаблоны дают возможность изменить способ отображения любых элементов управления, даже таких основополагающих, как кнопки или поля ввода.
6. Анимация. В WPF анимация – неотъемлемая часть программного каркаса. Анимация определяется декларативными дескрипторами, и WPF запускает её в действие автоматически. 7. Приложения на основе страниц. В WPF можно строить приложения с кнопками навигации, которые позволяют перемещаться по коллекции страниц.
Кроме этого, специальный тип приложения WPF – XBAP – может быть запущен внутри браузера. 2. Простейшее приложение WPF Построим простейшее однооконное приложение WPF.
Для этого создадим файл Program.cs и поместим в него следующий код: using System; using System.Windows; public class Program < [ STAThread ] public static void Main() < var myWindow = new Window (); myWindow.Title = «WPF Program» ; myWindow.Content = «Hello, world» ; var myApp = new Application (); myApp.Run(myWindow); >> Проанализируем этот код. Пространство имён System.Windows содержит классы Window и Application , описывающее окно и приложение соответственно. Точка входа помечена атрибутом [ STAThread ] . Это обязательное условие для любого приложения WPF, оно связано с моделью многопоточности WPF. В методе Main() создаётся и настраивается объект окна, затем создаётся объект приложения. Вызов метода Run() приводит к отображению окна и запуску цикла обработки событий (окно ждёт действий пользователя). Чтобы скомпилировать приложение, необходимо указать ссылки на стандартные сборки PresentationCore.dll , PresentationFramework.dll , System.Xaml.dll и WindowsBase.dll .
Отметим, что приложение допускает другую организацию. Вместо настройки объекта класса Window можно создать наследник этого класса и выполнить настройку в конструкторе наследника или в специальном методе: // наследник класса Window, описывающий пользовательское окно public class MainWindow : Window < public MainWindow() < Title = «WPF Program» ; Content = «Hello, world» ; >> В Visual Studio приложениям WPF соответствует отдельный шаблон проекта.
Этот шаблон ориентирован на использование XAML, поэтому в случае однооконного приложения будет создан следующий набор файлов: – файл MainWindow.xaml.cs на языке C# и MainWindow.xaml на языке XAML описывают класс MainWindow , являющийся наследником класса Window ; – файлы App.xaml.cs и App.xaml описывают класс App , наследник класса Application . Ниже приведён файл MainWindow.xaml для простейшего окна: < Window x:Class =»WpfApplication.MainWindow» xmlns:x =»http://schemas.microsoft.com/winfx/2006/xaml» Title =»WPF Program» Height =»250″ Width =»400″> Hello, world Visual Studio выполняет компиляцию проекта, созданного по шаблону WPF, в два этапа. Вначале для каждого файла XAML генерируется два файла, сохраняемых в подкаталогах objDebug или objRelease (в зависимости от цели компиляции): 1. файл с расширением *.baml (BAML-файл) – двоичное представление XAML-файла, внедряемое в сборку в виде ресурса; 2. файл с расширением *.g.cs – разделяемый класс, который соответствует XAML-описанию.
Этот класс содержит поля для всех именованных элементов XAML и реализацию метода InitializeComponent() , загружающего BAMLданные из ресурсов сборки. Кроме этого, класс содержит метод, подключающий все обработчики событий. На втором этапе сгенерированные файлы компилируются вместе с исходными файлами C# в единую сборку (рис. 2).
MainWindow.baml | Ресурсы |
MainWindow.xaml | |
сборки | |
MainWindow.g.cs | |
MainWindow.xaml.cs |
Инструкции App.baml CIL App.xaml App.g.cs App.xaml.cs
Первый этап | Второй этап |
компиляции | компиляции |
Рис. 2. Компиляция приложения WPF в Visual Studio. 3. XAML Расширяемый язык разметки приложений (eXtensible Application Markup Language, XAML 1 ) – это язык для представления дерева объектов .NET, основанный на XML. Данные XAML превращаются в дерево объектов при помощи анализатора XAML (XAML parser). Основное назначение XAML – описание пользовательских интерфейсов в приложениях WPF.
Однако XAML используется и в других технологиях, в частности, в Silverlight. Рассмотрим основные правила XAML. Документ XAML записан в формате XML.
Это означает, что имена элементов XAML чувствительны к регистру, нужна правильная вложенность элементов, а некоторые символы требуют особого обозначения (например, ). Кроме этого, XAML по умолчанию игнорирует лишние пробельные символы (однако это поведение изменяется установкой у элемента атрибута xml:space =»preserve» ). Объектные элементы XAML описывают объект некоторого типа платформы .NET и задают значения открытых свойств и полей объекта. Имя элемента указывает на тип объекта. Ниже приведено описание XAML для объекта класса Button (кнопка), а также эквивалентный код на языке C#: < Button Width =»100″>I am a Button // определение объекта в коде Button b = new Button (); b.Width = 100; b.Content = «I am a Button» ; 1 Произносится как [ˈzæməl].
Типы .NET обычно вложены в пространства имён. В XAML пространству имён .NET ставится в соответствие пространство имён XML.
Для этого используется следующий синтаксис: xmlns:префикс =»clr-namespace:пространство-имён» При необходимости указывается сборка, содержащая пространство имён: xmlns:префикс =»clr-namespace:пространство-имён;assembly=имя-сборки» Для нужд WPF зарезервировано два пространства имён XML: 1. http://schemas.microsoft.com/winfx/2006/xaml/presentation – обычно является пространством имён по умолчанию (указывается без префикса) и соответствует набору пространств имён .NET с типами WPF (эти пространства имён имеют вид System.Windows.* ). 2. http://schemas.microsoft.com/winfx/2006/xaml – отвечает простран- ству имён System.Windows.Markup , а также позволяет выделить директивы (указания) для анализатора XAML. Пространству имён анализатора XAML по традиции ставят в соответствие префикс x . < Window xmlns:x =»http://schemas.microsoft.com/winfx/2006/xaml» xmlns:sys =»clr-namespace:System;assembly=mscorlib»>Для установки значений свойств объекта в XAML можно использовать атрибуты XML, элементы свойств и содержимое элемента. При использовании атрибутов указывается имя свойства и значение свойства в виде строки: < Button Background =»Red» />Анализатор XAML применяет для преобразования строки в значение свойства специальные конвертеры типов (конвертеры не используются для строк, чисел и элементов перечислений). Приведённый выше фрагмент XAML эквивалентен следующему коду на C#: // TypeConverter и TypeDescriptor определены в System.ComponentModel var b = new Button (); TypeConverter convert = TypeDescriptor .GetConverter( typeof ( Brush )); b.Background = ( Brush ) convert.ConvertFromInvariantString( «Red» ); Платформа .NET содержит более ста стандартных конвертеров. При необходимости можно разработать собственный конвертер, используя базовый класс TypeConverter . Элемент свойства вложен в объектный элемент и имеет вид < имя- типа.имя-свойства >. Содержимое элемента свойства рассматривается как зна-
чение свойства (при необходимости применяются конвертеры). Обычно элементы свойств используются для значений, являющихся объектами.
< Button > < Button.Width >100 < Button.Background >Red Тип, соответствующий объектному элементу, может быть помечен атрибутом [ ContentProperty ] с указанием имени свойства содержимого . В этом случае анализатор XAML рассматривает содержимое объектного элемента (за исключением элементов свойств) как значение для свойства содержимого. Например, в классе ContentControl (он является базовым для класса Button ) свойством содержимого является Content : [System.Windows.Markup. ContentProperty ( «Content» )] public class ContentControl < public object Content < get ; set ; >// другие элементы класса ContentControl не показаны > Это означает, что следующие два фрагмента XAML эквиваленты: < Button Content =»Click me!» /> < Button >Click me! Если тип реализует интерфейсы IList или IDictionary , при описании объекта этого типа в XAML дочерние элементы автоматически добавляются в соответствующую коллекцию. Например, свойство Items класса ListBox имеет тип ItemCollection , а этот класс реализует интерфейс IList : < ListBox > < ListBox.Items > < ListBoxItem Content =»Item 1″ /> < ListBoxItem Content =»Item 2″ /> Кроме этого, Items – это свойство содержимого для ListBox , а значит, приведённое XAML-описание можно упростить: < ListBox > < ListBoxItem Content =»Item 1″ /> < ListBoxItem Content =»Item 2″ />
Источник: studfile.net
Windows Presentation Foundation. Обзор (Часть 1)
Одним из лучших вариантов для создания приложений для ОС Windows является технология WPF. Благодаря новой графической системе (относительно WinForm) появились стили, улучшенная система привязки, шаблоны элементов управления. Подробнее об этой технологии в этой статье.
Что это?
Windows Presentation Foundation (WPF) — аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML.
В WPF предустановлена в Windows Vista и выше. С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.
Особенности
В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая язык XAML (eXtensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трёхмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.
Графической технологией, лежащей в основе WPF, является DirectX, в отличие от Windows Forms, где используется GDI/GDI+. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.
Также существует урезанная версия CLR, называющаяся WPF/E, она же известна как Silverlight.
Разметка XAML
XAML представляет собой язык декларативного описания интерфейса, основанный на XML. Также реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые, в свою очередь, разделяются до уровня векторных фигур и свойств/действий. Это позволяет легко задать стиль для любого элемента.
Графика
WPF представляет обширный, масштабируемый и гибкий набор графических возможностей:
- Графика, не зависящая от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, который составляет 1/96 часть дюйма независимо от фактического разрешения экрана.
- Дополнительная поддержка графики и анимации. WPF упрощает программирование графики за счет автоматического управления анимацией. Разработчик не должен заниматься обработкой сцен анимации, циклами отрисовки и билинейной интерполяцией
- Аппаратное ускорение. Графическая система WPF использует преимущества графического оборудования, чтобы уменьшить использование ЦП.
Двухмерная графика
WPF предоставляет библиотеку общих двухмерных фигур, нарисованных с помощью векторов, таких, как прямоугольники и эллипсы, а также графические пути. И в своей функциональности фигуры реализуют многие возможности, которые доступны обычным элементам управления.
Двухмерная графика в WPF включает визуальные эффекты, такие как градиенты, точечные рисунки, чертежи, рисунки с видео, поворот, масштабирование и наклон.
Трехмерная графика
WPF также включает возможности трехмерной отрисовки, интегрированные с двухмерной графикой, что позволяет создавать более яркий и интересный пользовательский интерфейс.
Итог
Обновленный Windows Forms — WPF, предоставляет все необходимые инструменты для упрощенной работы с интерфейсом. Минусом является больший вес приложений, однако плюсов больше. С WPF можно реализовывать ещё больше абстрагированного функционала, реализовывать паттерны разграничения логики и интерфейса.
Источник: dzen.ru
Windows Presentation Foundation
Windows Presentation Foundation (WPF) — аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML.
WPF предустановлена в Windows Vista (.NET Framework 3.0), Windows 7 (.NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 и 4.5), Windows 8.1 (.NET Framework 4.5.1) и Windows 10 (.NET Framework 4.7). С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.
Особенности технологии
В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая язык XAML (eXtensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трёхмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.
Графической технологией, лежащей в основе WPF, является DirectX, в отличие от Windows Forms, где используется GDI/GDI+. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.
Также существует урезанная версия CLR, называющаяся WPF/E, она же известна как Silverlight.
Использование разметки XAML
XAML представляет собой язык декларативного описания интерфейса, основанный на XML. Также реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые, в свою очередь, разделяются до уровня векторных фигур и свойств/действий. Это позволяет легко задать стиль для любого элемента, например, Button (кнопка).
Средства разработки
Для работы с WPF требуется любой .NET-совместимый язык. В этот список входит множество языков: C#, F#, VB.NET, C++, Ruby, Python, Delphi (Prism), Lua и многие другие. Для полноценной работы может быть использована как Visual Studio, так и Expression Blend. Первая ориентирована на программирование, а вторая — на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому — анимация, стилизация, состояния, создание элементов управления и так далее.
Возможности
WPF предоставляет широкий спектр возможностей по созданию интерактивных настольных приложений:
Привязка данных
Это гибкий механизм, который позволяет через расширения разметки XAML связывать различные данные (от значений свойств элементов управления до общедоступных свойств, реализующих поля базы данных через Entity Framework). Привязка данных представлена классом Binding, который в свою очередь унаследован от MarkupExtension, что позволяет использовать привязки не только в коде, но и в разметке:
Помимо основного класса Binding в WPF реализовано еще несколько механизмов привязок:
- MultiBinding — позволяет создавать множественные привязки, указывая несколько элементов
- TemplateBinding — используется в шаблонах для связывания свойства элемента внутри шаблона со свойством элемента, к которому применен шаблон
- PriorityBinding — ранжирует список привязок и выбирает из них свойство (согласно приоритету) к которому будет применена привязка. Если привязка, имеющая наивысший приоритет успешно возвращает значение, то нет необходимости обрабатывать другие привязки в списке.
Стили
Позволяют создавать стилевое оформление элементов и, как правило, используются только в разметке:
Если стиль задается в ресурсах (например в словаре ресурсов), то можно использовать атрибут x:Key для указания уникального ключа. Затем в элементе управления, к которому необходимо применить стиль, нужно использовать расширение разметки StaticResource для связывания с этим стилем. Если использовать этот прием, то стили не будут нагромождать разметку.
Шаблоны элементов управления
Позволяют менять графическое оформление элементов и представлены классом ControlTemplate. В отличие от стилей, можно менять не только графическое представление элемента, но и его структуру. При этом шаблон элемента управления задается через свойство Template.
Простой пример круглой кнопки:
Шаблоны данных
В отличие от шаблонов элементов управления, задаются для определенного контекста данных (который в блочных элементах управления задается через свойство DataContext, а в списковых через ItemsSource). Сам шаблон данных представлен классом DataTemplate. Для обозначения типа данных, к которому необходимо применить шаблон, используется свойство DataType.
Ресурсы
Система ресурсов позволяет объединять шаблоны, стили, кисти, анимацию и многие другие интерактивные элементы, что существенно упрощает работу с ними. Ресурсы задаются в свойстве Resources класса FrameworkElement, от которого унаследованы все элементы управления, панели компоновки и даже класс Application. Это позволяет создавать многоуровневую систему ресурсов:
- ресурсы внутри объекта — действительны только для этого объекта
- ресурсы внутри панели компоновки (например Grid) — позволяет задать границу контекста ресурсов на уровне этой панели
- ресурсы внутри окна Window — если в приложении используется несколько окон, то ресурсы одного окна не будут доступны ресурсам другого окна
- ресурсы приложения — доступны повсеместно (как правило задаются в отдельном словаре ресурсов)
Графика
WPF представляет обширный, масштабируемый и гибкий набор графических возможностей:
- Графика, не зависящая от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, который составляет 1/96 часть дюйма независимо от фактического разрешения экрана.
- Дополнительная поддержка графики и анимации. WPF упрощает программирование графики за счет автоматического управления анимацией. Разработчик не должен заниматься обработкой сцен анимации, циклами отрисовки и билинейной интерполяцией
- Аппаратное ускорение. Графическая система WPF использует преимущества графического оборудования, чтобы уменьшить использование ЦП.
WPF предоставляет библиотеку общих двухмерных фигур, нарисованных с помощью векторов, таких, как прямоугольники и эллипсы, а также графические пути. И в своей функциональности фигуры реализуют многие возможности, которые доступны обычным элементам управления.
Двухмерная графика в WPF включает визуальные эффекты, такие как градиенты, точечные рисунки, чертежи, рисунки с видео, поворот, масштабирование и наклон.
Трехмерная графика
WPF также включает возможности трехмерной отрисовки, интегрированные с двухмерной графикой, что позволяет создавать более яркий и интересный пользовательский интерфейс.
Версии
- WPF 3.0 (Ноябрь 2006)
- WPF 3.5 (Ноябрь 2007)
- WPF 3.5 SP1 (Август 2008)
- WPF 4 (Апрель 2010)
- WPF 4.5 (Август 2012)
- WPF 4.5.1 (Октябрь 2013)
- WPF 4.5.2 (Май 2014)
- WPF 4.6 (Июль 2015)
Источник: gnezdoparanoika.ru
Windows Presentation Foundation
Windows Presentation Foundation (WPF) — аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML [1] .
WPF предустановлена в Windows Vista (.NET Framework 3.0), Windows 7 (.NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 и 4.5), Windows 8.1 (.NET Framework 4.5.1) и Windows 10 (.NET Framework 4.7). С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений [2] .
- 1 Особенности технологии
- 2 Использование разметки XAML
- 3 Средства разработки
- 4 Возможности
- 4.1 Привязка данных
- 4.2 Стили
- 4.3 Шаблоны элементов управления
- 4.4 Шаблоны данных
- 4.5 Ресурсы
- 4.6 Графика
- 4.6.1 Двухмерная графика
- 4.6.2 Трехмерная графика
Источник: wiki2.org