Jump to content

Фонд презентаций Windows

Фонд презентаций Windows (WPF)
Оригинальный автор(ы) Майкрософт
Разработчик(и) Фонд .NET
Первоначальный выпуск 21 ноября 2006 г .; 17 лет назад ( 21 ноября 2006 )
Стабильная версия
v8.0.5 / 14 мая 2024 г .; 2 месяца назад ( 14.05.2024 ) [1]
Репозиторий
Написано в С# , С++ , С
Операционная система Microsoft Windows
Платформа .NET Framework , .NET
Тип Программная среда
Лицензия МОЯ лицензия
Веб-сайт учиться .microsoft /en-нас /дотнет /рабочий стол /wpf /

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]

Примеры кода

[ редактировать ]
Снимок экрана: разработка базового приложения пользовательского интерфейса Windows Presentation Foundation (WPF) в Visual Studio 2022. XAML используется для определения макета, а C# — для определения интерактивного поведения.

В 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]

После успеха языков разметки для веб-разработки 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]

Использование и прием

[ редактировать ]
Visual Studio — пример приложения, созданного с использованием WPF.

WPF используется для разработки Visual Studio Microsoft , флагманской IDE , а также для разработки Microsoft Expression Blend . [32]

Влияние на другие UI-фреймворки

[ редактировать ]
Пример приложения, созданного с помощью UWP — платформы на основе XAML, созданной под влиянием WPF.

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 .

  1. ^ "v8.0.5" . github.com . 14 мая 2023 г. Проверено 30 мая 2023 г.
  2. ^ «Что такое Windows Presentation Foundation — WPF .NET» . Learn.microsoft.com . 2023-06-02 . Проверено 15 мая 2024 г.
  3. ^ Перейти обратно: а б Мартин, Джефф (4 декабря 2018 г.). «Открытые исходные коды Microsoft WPF, WinForms и WinUI» . ИнфоQ . Проверено 6 декабря 2018 г.
  4. ^ Перейти обратно: а б дотнет-бот. «Обзор XAML (WPF)» . msdn.microsoft.com . Проверено 31 марта 2018 г.
  5. ^ Селлс, Крис; Гриффитс, Ян (2007). Программирование WPF: создание пользовательского интерфейса Windows с помощью Windows Presentation Foundation . «О'Рейли Медиа, Инк.». ISBN  9780596554798 .
  6. ^ кексугит (14 марта 2007 г.). «Мешок с письмами: какая версия .NET Framework включена в какую версию ОС?» . Learn.microsoft.com . Проверено 25 мая 2024 г.
  7. ^ Геваррен (24 апреля 2024 г.). «.NET Framework и версии ОС Windows — .NET Framework» . Learn.microsoft.com . Проверено 25 мая 2024 г.
  8. ^ Генсельман, Скотт (4 декабря 2018 г.). «Объявление о том, что WPF, WinForms и WinUI становятся открытым исходным кодом» . Проверено 6 декабря 2018 г.
  9. ^ Графика и мультимедиа . Msdn.Microsoft.com. Проверено 29 августа 2013 г.
  10. ^ дотнет-бот. «Класс эффекта (System.Windows.Media.Effects)» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  11. ^ «4. Как WPF и Silverlight используют шейдеры — HLSL и пиксельные шейдеры для разработчиков XAML [Книга]» . www.oreilly.com . Проверено 28 мая 2024 г.
  12. ^ «Представляем Windows Presentation Foundation» . msdn.microsoft.com . Проверено 31 марта 2018 г.
  13. ^ «Что нового в WPF 3.5? Пятнадцать интересных функций…» Проверено 14 октября 2007 г. .
  14. ^ Перейти обратно: а б с д Адегео (2 сентября 2023 г.). «Обзор привязки данных — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  15. ^ Адегео (28 июня 2022 г.). «Обзор свойств зависимостей — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  16. ^ кексугит (08.12.2016). «Шаблоны — приложения WPF с шаблоном проектирования Модель-Представление-ViewModel» . Learn.microsoft.com . Проверено 25 мая 2024 г.
  17. ^ Адегео (03.03.2023). «Стили и шаблоны — WPF .NET» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  18. ^ Перейти обратно: а б с Адегео (17 марта 2022 г.). «Обзор анимации — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  19. ^ Адегео (06 февраля 2023 г.). «Обзор документов — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  20. ^ Адегео (18 августа 2022 г.). «Функции шрифтов OpenType — WPF .NET Framework» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  21. ^ «Типографика в Windows Presentation Foundation» . msdn.microsoft.com . Проверено 31 марта 2018 г.
  22. ^ дотнет-бот. «Обзор ClearType» . msdn.microsoft.com . Проверено 31 марта 2018 г.
  23. ^ «Отключить сглаживание» . Social.msdn.microsoft.com . Проверено 31 марта 2018 г.
  24. ^ дотнет-бот. «Метод WindowsFormsHost.EnableWindowsFormsInterop (System.Windows.Forms.Integration)» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  25. ^ Джорицинский (10 мая 2024 г.). «Вызов платформы (P/Invoke) — .NET» . Learn.microsoft.com . Проверено 25 мая 2024 г.
  26. ^ Адегео (18 августа 2022 г.). «Цифровые чернила — Windows Forms и COM против WPF» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  27. ^ кексугит (12 августа 2015 г.). «Журнал MSDN: Границы пользовательского интерфейса — события манипулирования несколькими касаниями в WPF» . Learn.microsoft.com . Проверено 22 мая 2024 г.
  28. ^ Ксанский. «Обзор автоматизации пользовательского интерфейса» . msdn.microsoft.com . Проверено 31 марта 2018 г.
  29. ^ Макдональд, Мэтью (2010). Pro WPF в VB 2010: Windows Presentation Foundation в .NET 4 . Апресс. ISBN  9781430272403 .
  30. ^ адегео. «Часто задаваемые вопросы о поддержке XBAP» . Learn.microsoft.com . Проверено 15 мая 2024 г.
  31. ^ кексугит (09 марта 2011 г.). «IE9 — XBAP отключены в зоне Интернета» . Learn.microsoft.com . Проверено 15 мая 2024 г.
  32. ^ Блог, Visual Studio (16 февраля 2010 г.). «WPF в Visual Studio 2010 — Часть 1: Введение» . Блог Visual Studio . Проверено 22 мая 2024 г.
  33. ^ Блог, Microsoft Edge; Смит, Джерри (2 июля 2015 г.). «Переход на HTML5 Premium Media» . Блог Microsoft Edge . Проверено 23 мая 2024 г.
  34. ^ Имя GitHub. «Silverlight 5 — жизненный цикл Microsoft» . Learn.microsoft.com . Проверено 23 мая 2024 г.
  35. ^ «Пользовательский интерфейс Avalonia — кроссплатформенная платформа пользовательского интерфейса для .NET» . Интерфейс Авалонии . Проверено 16 мая 2024 г.
  36. ^ «Интерфейс Авалонии — Витрина» . avaloniaui.net . Проверено 23 мая 2024 г.
  37. ^ jwmsft (20 октября 2022 г.). «Платформа XAML — приложения UWP» . Learn.microsoft.com . Проверено 23 мая 2024 г.
  38. ^ Дэвидбрич (25 июля 2023 г.). «XAML — .NET MAUI» . Learn.microsoft.com . Проверено 23 мая 2024 г.
  39. ^ Команда CodeGuru (06 апреля 2009 г.). «Экскурсия по WPF в Visual Studio 2008» . КодГуру . Проверено 23 мая 2024 г.
  40. ^ «Подробности о загрузке: Кодовое название Microsoft Visual Studio «Orcas». Предварительная версия технологии сообщества — инструменты разработки WinFX™» . 15 апреля 2006 г. Архивировано из оригинала 15 апреля 2006 г. Проверено 23 мая 2024 г.
  41. ^ Адегео (18 августа 2022 г.). «Скомпилировать приложение — WPF .NET Framework» . Learn.microsoft.com . Проверено 23 мая 2024 г.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f6fe106e5607ab0bca63287d51edc78f__1722005400
URL1:https://arc.ask3.ru/arc/aa/f6/8f/f6fe106e5607ab0bca63287d51edc78f.html
Заголовок, (Title) документа по адресу, URL1:
Windows Presentation Foundation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)