Фонд презентаций Windows
Оригинальный автор(ы) | Майкрософт |
---|---|
Разработчик(и) | Фонд .NET |
Первоначальный выпуск | 21 ноября 2006 г |
Стабильная версия | v8.0.5
/ 14 мая 2024 г [1] |
Репозиторий | |
Написано в | С# , С++ , С |
Операционная система | Microsoft Windows |
Платформа | .NET Framework , .NET |
Тип | Программная среда |
Лицензия | МОЯ лицензия |
Веб-сайт | учиться |
Windows Presentation Foundation ( WPF ) — это бесплатная платформа пользовательского интерфейса с открытым исходным кодом для Windows настольных приложений на базе . Приложения WPF основаны на .NET и в основном разрабатываются с использованием C# и XAML . [2]
Первоначально разработанный Microsoft , WPF был первоначально выпущен как часть .NET Framework 3.0 в 2006 году. В 2018 году Microsoft выпустила WPF с открытым исходным кодом под лицензией MIT . [3] Дизайн WPF и его язык макета XAML были приняты во многих других платформах пользовательского интерфейса, таких как UWP , .NET MAUI и Avalonia .
Обзор
[ редактировать ]WPF использует XAML , язык на основе XML , для определения и связывания различных элементов интерфейса, а также использует C# для определения поведения программы. [4] Приложения WPF развертываются как автономные настольные программы.
WPF поддерживает ряд распространенных элементов пользовательского интерфейса , таких как 2D/3D-рендеринг, фиксированные и адаптивные документы , типографика , векторная графика , анимация во время выполнения и предварительно обработанные медиафайлы. Эти элементы затем можно связывать и манипулировать ими на основе различных событий, взаимодействий пользователя и привязок данных . [5]
WPF Библиотеки времени выполнения включены во все версии Microsoft Windows, начиная с Windows Vista и Windows Server 2008 . [6] [7]
На мероприятии Microsoft Connect 4 декабря 2018 года компания Microsoft объявила о выпуске WPF как проекта с открытым исходным кодом на GitHub . Он выпущен под лицензией MIT . Windows Presentation Foundation стала доступна для проектов, ориентированных на программную среду .NET , однако система не является кроссплатформенной и по-прежнему доступна только в Windows. [3] [8]
Примеры кода
[ редактировать ]
В WPF экраны и другие элементы пользовательского интерфейса определяются с помощью пары файлов: файла XAML и связанного файла C# с расширением .xaml.cs
, часто называемый «кодом программной части». Файл XAML декларативно определяет макет, содержимое и другие свойства элемента пользовательского интерфейса, а файл C# позволяет отображать точки входа кода для интерактивности. [4]
Базовый пример интерактивного сообщения Hello, World! программу можно создать так:
MainWindow.xaml:
<Window x:Class="WpfExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">
<StackPanel Orientation="Vertical">
<TextBlock Text="What is your name?"/>
<TextBox x:Name="NameInputTextBox"/>
<Button x:Name="SubmitButton" Click="SubmitButton_Click">
<TextBlock Text="Submit"/>
</Button>
<TextBlock x:Name="ResultTextBlock"/>
</StackPanel>
</Window>
MainWindow.xaml.cs:
using System.Windows;
namespace WpfExample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void SubmitButton_Click(object sender, RoutedEventArgs e)
{
var name = this.NameInputTextBox.Text;
this.ResultTextBlock.Text = $"Hello {name}!";
}
}
}
В приведенном выше примере элемент пользовательского интерфейса под названием MainWindow
объявлен как подкласс встроенного Window
сорт. Файл XAML определяет макет, который в этом примере представляет собой вертикальную коллекцию элементов управления — текстовый блок с инструкциями для пользователя, текстовое поле, в котором пользователь может ввести свое имя, кнопку для отправки и текстовый блок результатов. При нажатии кнопки метод SubmitButton_Click
называется, что определено в .xaml.cs
файл. Эта функция обновляет окончательный текстовый блок, чтобы он содержал сообщение, приветствующее пользователя и обращающееся к нему по отправленному имени.
Функции
[ редактировать ]Медиа и графика
[ редактировать ]WPF поддерживает большинство современных типов мультимедиа, включая векторные и растровые изображения, аудио и видео, а также поддерживает как 2D-, так и 3D-рендеринг. [9] Он также поддерживает реализацию графических эффектов для визуальных элементов, таких как HLSL пиксельные шейдеры , и встроенных эффектов, таких как размытие и тени . [10] [11]
WPF в основном опирается на векторную графику, которая позволяет масштабировать большинство элементов управления и элементов без потери качества или пикселизации . [12] [13]
Привязка данных
[ редактировать ]WPF использует привязку данных — метод распространения изменений между элементами пользовательского интерфейса и объектной моделью программы. [14] Например, текстовый блок, определенный в XAML, может связать свое содержимое со строковым свойством, хранящимся в объекте C#, следующим образом:
<TextBlock Text="{Binding Username}" />
public class ExampleViewModel
{
public string Username { get; set; }
}
Это заставит текстовый блок отображать значение Username
свойство.
Направление привязки данных можно настроить — его можно определить для перехода от пользовательского интерфейса к источнику (например, текст, введенный в текстовое поле , распространяется на связанное строковое свойство в коде) или от источника к пользовательскому интерфейсу (например, визуальные часы). обновляется для отображения текущего времени, сохраненного в коде), или двунаправленного. [14]
Привязка данных не имеет никаких ограничений по типам, можно привязывать структуры , классы или коллекции . Конвертеры можно использовать для транспонирования значений и типов, используемых во время привязки — например, привязки текстового поля к свойству DateTime , но с использованием конвертера для отображения времени в виде форматированной локализованной строки даты . [14]
Большинство свойств встроенных элементов управления могут быть привязаны к данным, а пользовательские элементы управления могут создавать привязываемые свойства путем определения свойств зависимостей. [14] [15]
MVVM , архитектурный шаблон, рекомендуемый Microsoft для разработчиков WPF, в значительной степени опирается на привязку данных. [16]
Стили и шаблоны
[ редактировать ]Используя шаблоны и стили, разработчики могут определять визуальные эффекты и структуру элементов пользовательского интерфейса.
Стиль — это комбинация настроек свойств, которые можно применить к элементу пользовательского интерфейса с помощью одного атрибута свойства. Например, можно создать стиль «синего переключателя », а затем повторно использовать его в любом количестве переключателей по всей программе. Стили могут изменять коллекции свойств элементов управления, но не предназначены для значительных структурных изменений.
Шаблоны — это механизм определения альтернативного пользовательского интерфейса для частей приложения WPF. В WPF доступно несколько типов шаблонов для разных сценариев, но все они имеют общую цель — определить содержимое, макет и структуру элемента пользовательского интерфейса. [17]
Анимации
[ редактировать ]В WPF многие визуальные свойства можно анимировать. Это проявляется через свойства зависимостей, которые представляют собой ту же базовую систему, на которую опирается привязка данных. Анимации WPF основаны на времени, а не на основе кадров. [18]
Классы анимации основаны на типе анимируемого свойства .NET. Например, изменение цвета элемента выполняется с помощью класса ColorAnimation, а анимация ширины элемента (который вводится как double ) — с помощью класса DoubleAnimation. [18]
Анимации можно сгруппировать в раскадровки, которые являются основным способом запуска, остановки, приостановки и иного управления анимацией. [18]
Документы и текст
[ редактировать ]WPF изначально поддерживает документы с разбивкой на страницы. Он обеспечивает DocumentViewer
класс, предназначенный для чтения документов с фиксированным макетом. FlowDocumentReader
Класс предлагает различные режимы просмотра, такие как постраничный или прокручиваемый, а также перекомпоновывает текст, если размер области просмотра изменяется. Он поддерживает как спецификацию XML Paper , так и соглашения об открытой упаковке . [19]
WPF включает ряд функций рендеринга текста, включая шрифты OpenType , TrueType и OpenType CFF ( компактный формат шрифта ). Это означает, что WPF может поддерживать большое количество текстовых функций, включая лигатуры , цифры старого стиля , варианты наклона , дроби , надстрочный и нижний индекс , маленькие прописные буквы , рубиновые символы , замену глифов , несколько базовых линий и кернинг . [20]
WPF обрабатывает тексты в Юникоде и обрабатывает тексты независимо от глобальных настроек, таких как языковой стандарт системы. Кроме того, предусмотрены резервные механизмы, позволяющие управлять направлением письма (горизонтальное или вертикальное) независимо от имени шрифта; создание международных шрифтов из составных шрифтов с использованием группы одноязычных шрифтов; Встраивание составных шрифтов. Информация о связывании шрифтов и резервных шрифтах хранится в переносимом XML-файле с использованием технологии составных шрифтов. [21] XML-файл имеет расширение .CompositeFont .
Текстовый движок WPF также поддерживает встроенную проверку орфографии . Он также поддерживает такие функции, как автоматический межстрочный интервал, расширенный международный текст, разрыв строки с учетом языка, расстановка переносов и выравнивание, растровые эффекты, преобразования и текстовые эффекты, такие как тени, размытие, свечение, вращение и т. д. Также поддерживается анимированный текст; это относится к анимированным глифам, а также к изменениям положения, размера, цвета и непрозрачности текста в реальном времени.
При рендеринге текста WPF используются преимущества технологии ClearType , такие как субпиксельное позиционирование, естественная ширина продвижения, сглаживание в направлении Y, аппаратное ускорение рендеринга текста, а также агрессивное кэширование предварительно визуализированного текста в видеопамяти. [22] ClearType нельзя отключить в старых приложениях WPF 3.x. [23]
Совместимость
[ редактировать ]Возможности Windows Forms возможны благодаря использованию ElementHost
и WindowsFormsHost
занятия.
Чтобы включить использование WinForms, разработчик выполняет это из своего кода WPF C#: [24]
System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop();
Программы WPF через P/Invoke функцию CLR могут получать доступ к собственным функциям, таким как вызов функций из библиотек Windows . Это обеспечивает возможность взаимодействия и управления другими частями операционной системы, включая неуправляемые библиотеки . [25]
Альтернативный ввод и доступность
[ редактировать ]WPF поддерживает Windows Ink для ввода пером . [26] и мультисенсорный ввод в Windows 7 и более поздних версиях. [27] Он также поддерживает автоматизацию пользовательского интерфейса Microsoft , что позволяет разработчикам создавать доступные интерфейсы и предоставлять пользовательский интерфейс средам автоматического тестирования. [28]
XAML
[ редактировать ]После успеха языков разметки для веб-разработки WPF представляет расширяемый язык разметки приложений ( XAML ; / ˈ z æ m əl / ), основанный на XML . XAML разработан как более эффективный метод разработки пользовательских интерфейсов приложений. [29] Особое преимущество, которое XAML привносит в WPF, заключается в том, что XAML — это полностью декларативный язык, позволяющий разработчику (или проектировщику) описывать поведение и интеграцию компонентов без использования процедурного программирования . Хотя редко все приложение полностью создается на XAML, внедрение XAML позволяет разработчикам приложений более эффективно участвовать в цикле разработки приложений. Использование XAML для разработки пользовательских интерфейсов также позволяет разделить модель и представление, что считается хорошим архитектурным принципом. В XAML элементы и атрибуты сопоставляются с классами и свойствами в базовых API.
Как и в веб-разработке, для разметки хорошо подходят как макеты, так и отдельные темы, но ни для того, ни для другого XAML не требуется. Действительно, все элементы WPF могут быть закодированы на языке .NET ( C# , VB.NET ). Код XAML в конечном итоге можно скомпилировать в управляемую сборку так же, как и все языки .NET.
Развертывание
[ редактировать ]Приложения WPF — это автономные исполняемые файлы рабочего стола, предназначенные только для Windows .
Исторически WPF поддерживала компиляцию в XBAP — формат файла, предназначенный для отображения в веб-браузерах с помощью подключаемого модуля NPAPI , но поддержка NPAPI и XBAP была прекращена браузерами, а компиляция XBAP больше не включена в WPF для .NET. [30] [31]
Использование и прием
[ редактировать ]
WPF используется для разработки Visual Studio Microsoft , флагманской IDE , а также для разработки Microsoft Expression Blend . [32]
Влияние на другие UI-фреймворки
[ редактировать ]
WPF и его язык макета XAML повлияли на множество других инфраструктур пользовательского интерфейса.
Silverlight (кодовое название WPF/E — WPF Everywhere), выпущенный в 2007 году, представляет собой устаревший кроссбраузерного плагин для браузера , который содержал технологию на основе WPF, включая XAML, которая предоставляла такие функции, как видео, векторная графика и анимация. В частности, он предоставлялся как надстройка для Mozilla Firefox , Internet Explorer 6 и выше, Google Chrome 42 и ниже и Apple Safari . Microsoft призвала разработчиков прекратить использование Silverlight в 2015 году. [33] и поддержка была официально прекращена в 2021 году. [34]
После того, как WPF стал открытым исходным кодом в 2018 году, он был разветвлен для проекта Avalonia , кроссплатформенной платформы пользовательского интерфейса .NET с открытым исходным кодом на основе XAML, распространяемой по лицензии MIT . Хотя WPF предназначен только для Windows, Avalonia также поддерживает сборки для Интернета (через WebAssembly ), MacOS , Android , iOS и Linux . Название Avalonia отсылает к кодовому названию WPF, находящемуся в разработке («Avalon»), и позиционирует себя как «духовного преемника WPF». [35] Avalonia в настоящее время используется в инструментах, созданных Unity , GitHub и JetBrains . [36]
XAML, который был впервые разработан для WPF, был адаптирован для других аналогичных библиотек пользовательского интерфейса, разработанных Microsoft, таких как UWP . [37] предназначен для Windows 10 , Windows 11 , Xbox One и Xbox Series S/X приложений , а также .NET MAUI (ранее Xamarin.Forms ), предназначенный для создания кроссплатформенных собственных для Android и iOS . приложений [38]
Разработка
[ редактировать ]Разработчики приложений WPF обычно используют Microsoft Visual Studio . Visual Studio содержит комбинацию редактора XAML и визуального дизайнера WPF, начиная с Visual Studio 2008. [39] До Visual Studio 2008 дизайнера WPF надстройка под кодовым названием Cider представляла собой исходную версию редактора WYSIWYG для создания окон, страниц и пользовательских элементов управления WPF. Он был доступен для Visual Studio 2005 как расширения Visual Studio 2005 для .NET Framework 3.0 CTP для первоначального выпуска WPF. [40]
Visual Studio не является строго обязательным условием для разработки проектов WPF, поскольку решения можно создавать в командной строке с помощью MSBuild . [41]
Microsoft Blend — это инструмент, ориентированный на дизайнеров, который предоставляет монтажную область для создания приложений WPF с 2D- и 3D-графикой, текстом и содержимым форм. Он генерирует XAML , который можно экспортировать в другие инструменты, а также совместно использовать решения (sln-файлы) и форматы проектов (csproj, vbproj) с помощью Microsoft Visual Studio. Microsoft Expression Design — это инструмент растровой и 2D-векторной графики для экспорта в XAML .
Ссылки
[ редактировать ]- ^ "v8.0.5" . github.com . 14 мая 2023 г. Проверено 30 мая 2023 г.
- ^ «Что такое Windows Presentation Foundation — WPF .NET» . Learn.microsoft.com . 2023-06-02 . Проверено 15 мая 2024 г.
- ^ Перейти обратно: а б Мартин, Джефф (4 декабря 2018 г.). «Открытые исходные коды Microsoft WPF, WinForms и WinUI» . ИнфоQ . Проверено 6 декабря 2018 г.
- ^ Перейти обратно: а б дотнет-бот. «Обзор XAML (WPF)» . msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ Селлс, Крис; Гриффитс, Ян (2007). Программирование WPF: создание пользовательского интерфейса Windows с помощью Windows Presentation Foundation . «О'Рейли Медиа, Инк.». ISBN 9780596554798 .
- ^ кексугит (14 марта 2007 г.). «Мешок с письмами: какая версия .NET Framework включена в какую версию ОС?» . Learn.microsoft.com . Проверено 25 мая 2024 г.
- ^ Геваррен (24 апреля 2024 г.). «.NET Framework и версии ОС Windows — .NET Framework» . Learn.microsoft.com . Проверено 25 мая 2024 г.
- ^ Генсельман, Скотт (4 декабря 2018 г.). «Объявление о том, что WPF, WinForms и WinUI становятся открытым исходным кодом» . Проверено 6 декабря 2018 г.
- ^ Графика и мультимедиа . Msdn.Microsoft.com. Проверено 29 августа 2013 г.
- ^ дотнет-бот. «Класс эффекта (System.Windows.Media.Effects)» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ «4. Как WPF и Silverlight используют шейдеры — HLSL и пиксельные шейдеры для разработчиков XAML [Книга]» . www.oreilly.com . Проверено 28 мая 2024 г.
- ^ «Представляем Windows Presentation Foundation» . msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ «Что нового в WPF 3.5? Пятнадцать интересных функций…» Проверено 14 октября 2007 г. .
- ^ Перейти обратно: а б с д Адегео (2 сентября 2023 г.). «Обзор привязки данных — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Адегео (28 июня 2022 г.). «Обзор свойств зависимостей — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ кексугит (08.12.2016). «Шаблоны — приложения WPF с шаблоном проектирования Модель-Представление-ViewModel» . Learn.microsoft.com . Проверено 25 мая 2024 г.
- ^ Адегео (03.03.2023). «Стили и шаблоны — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Перейти обратно: а б с Адегео (17 марта 2022 г.). «Обзор анимации — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Адегео (06 февраля 2023 г.). «Обзор документов — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Адегео (18 августа 2022 г.). «Функции шрифтов OpenType — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ «Типографика в Windows Presentation Foundation» . msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ дотнет-бот. «Обзор ClearType» . msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ «Отключить сглаживание» . Social.msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ дотнет-бот. «Метод WindowsFormsHost.EnableWindowsFormsInterop (System.Windows.Forms.Integration)» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Джорицинский (10 мая 2024 г.). «Вызов платформы (P/Invoke) — .NET» . Learn.microsoft.com . Проверено 25 мая 2024 г.
- ^ Адегео (18 августа 2022 г.). «Цифровые чернила — Windows Forms и COM против WPF» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ кексугит (12 августа 2015 г.). «Журнал MSDN: Границы пользовательского интерфейса — события манипулирования несколькими касаниями в WPF» . Learn.microsoft.com . Проверено 22 мая 2024 г.
- ^ Ксанский. «Обзор автоматизации пользовательского интерфейса» . msdn.microsoft.com . Проверено 31 марта 2018 г.
- ^ Макдональд, Мэтью (2010). Pro WPF в VB 2010: Windows Presentation Foundation в .NET 4 . Апресс. ISBN 9781430272403 .
- ^ адегео. «Часто задаваемые вопросы о поддержке XBAP» . Learn.microsoft.com . Проверено 15 мая 2024 г.
- ^ кексугит (09 марта 2011 г.). «IE9 — XBAP отключены в зоне Интернета» . Learn.microsoft.com . Проверено 15 мая 2024 г.
- ^ Блог, Visual Studio (16 февраля 2010 г.). «WPF в Visual Studio 2010 — Часть 1: Введение» . Блог Visual Studio . Проверено 22 мая 2024 г.
- ^ Блог, Microsoft Edge; Смит, Джерри (2 июля 2015 г.). «Переход на HTML5 Premium Media» . Блог Microsoft Edge . Проверено 23 мая 2024 г.
- ^ Имя GitHub. «Silverlight 5 — жизненный цикл Microsoft» . Learn.microsoft.com . Проверено 23 мая 2024 г.
- ^ «Пользовательский интерфейс Avalonia — кроссплатформенная платформа пользовательского интерфейса для .NET» . Интерфейс Авалонии . Проверено 16 мая 2024 г.
- ^ «Интерфейс Авалонии — Витрина» . avaloniaui.net . Проверено 23 мая 2024 г.
- ^ jwmsft (20 октября 2022 г.). «Платформа XAML — приложения UWP» . Learn.microsoft.com . Проверено 23 мая 2024 г.
- ^ Дэвидбрич (25 июля 2023 г.). «XAML — .NET MAUI» . Learn.microsoft.com . Проверено 23 мая 2024 г.
- ^ Команда CodeGuru (06 апреля 2009 г.). «Экскурсия по WPF в Visual Studio 2008» . КодГуру . Проверено 23 мая 2024 г.
- ^ «Подробности о загрузке: Кодовое название Microsoft Visual Studio «Orcas». Предварительная версия технологии сообщества — инструменты разработки WinFX™» . 15 апреля 2006 г. Архивировано из оригинала 15 апреля 2006 г. Проверено 23 мая 2024 г.
- ^ Адегео (18 августа 2022 г.). «Скомпилировать приложение — WPF .NET Framework» . Learn.microsoft.com . Проверено 23 мая 2024 г.
Библиография
[ редактировать ]- Адам Натан : Windows Presentation Foundation Unleashed (WPF) , 21 декабря 2006 г., Sams Publishing, ISBN 0-672-32891-7
- Крис Андерсон : Essential Windows Presentation Foundation (WPF) , 11 апреля 2007 г., Аддисон-Уэсли, ISBN 0-321-37447-9
- Крис Селлс, Ян Гриффитс: Программирование WPF , 28 августа 2007 г., O'Reilly Media, ISBN 0-596-51037-3
- Арлен Фельдман , Макс Даймон : WPF в действии с Visual Studio 2008 , 21 ноября 2008 г., Manning Publications, ISBN 1-933988-22-3
Внешние ссылки
[ редактировать ]- Терминология .NET
- программное обеспечение 2006 года
- Ранее проприетарное программное обеспечение
- Бесплатное программное обеспечение с открытым исходным кодом
- Интерфейсы прикладного программирования Microsoft
- бесплатное программное обеспечение Майкрософт
- Мультимедийная технология Microsoft Windows
- Программное обеспечение, использующее лицензию MIT
- Наборы инструментов для виджетов
- Бесплатное программное обеспечение только для Windows