Технология WindowsPresentationFoundation (WPF) Windows Presentation Foundation (WPF) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML. Существует две реализации WPF: 1. Версия .NET Реализация WPF с открытым кодом, размещенная на GitHub, которая работает в .NET. Для работы конструктора XAML требуется версия Visual Studio 2019 не ниже 16.8. Но в зависимости от версии .NET вам может потребоваться использовать более новую версию Visual Studio. Несмотря на то, что .NET является кроссплатформенной технологией, WPF работает только в Windows. 2. Платформа .NET Framework версии 4. Реализация WPF в .NET Framework, поддерживаемая в Visual Studio 2019 и Visual Studio 2017. .NET Framework 4 — это версия .NET только для Windows, которая считается компонентом операционной системы Windows. Эта версия WPF распространяется с .NET Framework. Программирование с помощью WPF WPF существует в виде подмножества типов .NET, которые по большей части находятся в пространстве имен System.Windows. Если ранее вы создавали приложения в .NET с помощью таких платформ, как ASP.NET и Windows Forms, то должны быть знакомы с фундаментальными принципами программирования WPF. Вы выполняете следующие действия. Создание экземпляров классов Задание свойств Вызов методов Обработка событий WPF включает в себя дополнительные конструкции программирования, которые расширяют возможности свойств и событий: свойства зависимостей и перенаправленные события. Разметка и код программной части WPF позволяет разрабатывать приложения, используя как разметку, так и код программной части, что привычно для разработчиков на ASP.NET. Разметка XAML обычно используется для определения внешнего вида приложения, а управляемые языки программирования (код программной части) — для реализации его поведения. Такое разделение внешнего вида и поведения имеет ряд преимуществ. Затраты на разработку и обслуживание снижаются, так как разметка, определяющая внешний вид, не связана тесно с кодом, обуславливающим поведение. Повышается эффективность разработки, так как дизайнеры, занимающиеся внешним видом приложения, могут работать параллельно с разработчиками, реализующими поведение приложения. Глобализация и локализация приложений WPF упрощена. Разметка XAML — это язык разметки на основе XML, который служит для определения внешнего вида приложения в декларативной форме. Обычно он используется для определения окон, страниц и пользовательских элементов управления, а также их заполнения элементами управления, фигурами и графическими элементами. В приведенном ниже примере XAML используется для определения внешнего вида окна, содержащего одну кнопку. Поддерживающий код Основное поведение приложения состоит в реализации функции, реагирующей на взаимодействие с пользователем. Например, нажатие меню или кнопки и вызов бизнес-логики и логики доступа к данным в ответ. В WPF такое поведение реализуется в коде, связанном с разметкой. Этот код называется кодом программной части.. Ввод данных и команды Элементы управления чаще всего используются для определения ввода данных пользователем и реагирования на него. Система ввода WPF использует как прямые, так и перенаправленные события для поддержки ввода текста, управления фокусом и определения положения указателя мыши. Приложения часто предъявляют сложные требования к вводу. WPF предоставляет систему команд, которая отделяет действия по вводу данных пользователем от кода, реагирующего на эти действия. Система команд позволяет нескольким источникам вызывать одну и ту же логику команд. Например, рассмотрим распространенные операции редактирования, используемые различными приложениями: Копировать, Вырезать и Вставить. Эти операции можно вызывать путем выполнения различных действий пользователя, если они реализованы с помощью команд. Элементы управления Возможности взаимодействия с пользователем, обеспечиваемые моделью приложения, реализуются с помощью сконструированных элементов управления. В WPF элемент управления — это собирательный термин, который применяется к категории классов WPF, имеющей следующие характеристики: размещение либо в окне, либо на странице; наличие пользовательского интерфейса; реализация некоторого поведения. Функциональная классификация элементов управления WPF Ниже перечислены встроенные элементы управления WPF. Кнопки: Button и RepeatButton. Вывод данных: DataGrid, ListView и TreeView. Вывод и выбор дат: Calendar и DatePicker. Диалоговые окна: OpenFileDialog, PrintDialog и SaveFileDialog. Рукописный ввод: InkCanvas и InkPresenter. Документы: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollView erи StickyNoteControl. Ввод: TextBox, RichTextBox и PasswordBox. Макет: Border, BulletDecorator, Canvas, DockPanel, Expander, Grid, GridView, GridSplitter, GroupBox, Panel, ResizeGrip, Separator, ScrollBar, ScrollViewer, StackPanel, Thumb, Viewbox, VirtualizingStackPanel, Window и WrapPanel. Мультимедиа: Image, MediaElementи SoundPlayerAction. Меню: ContextMenu, Menuи ToolBar. Навигация: Frame, Hyperlink, Page, NavigationWindowи TabControl. Выбор: CheckBox, ComboBox, ListBox, RadioButtonи Slider. Информирование пользователя: AccessText, Label, Popup, ProgressBar, StatusBar, TextBlock и ToolTip. Макет При создании пользовательского интерфейса вы компонуете элементы управления, настраивая их расположение и размер. Основным требованием любого макета является адаптация к изменениям размеров окна и параметров экрана. Платформа WPF избавляет вас от необходимости писать код для адаптации макета к таким условиям, предоставляя первоклассную расширяемую систему макета. Ключевым элементом системы макета является относительное позиционирование, которое упрощает адаптацию к меняющимся характеристикам окна и экрана. Система макета также управляет взаимодействием между элементами управления для определения макета. Взаимодействие протекает в два этапа: сначала элемент управления сообщает родительскому объекту о требуемом расположении и размере, а затем родительский объект сообщает родительскому элементу, какое пространство он может занять. Система макета доступна дочерним элементам управления посредством базовых классов WPF. Для стандартных макетов, таких как сетка, наложение и закрепление, в WPF имеется несколько элементов управления макетом. Привязка данных Большинство приложений предоставляют пользователям возможность просматривать и редактировать данные. Для приложений WPF действия по хранению и доступу к данным уже предусмотрены в различных библиотеках доступа к данным .NET, таких как SQL и Entity Framework Core. После получения доступа к данным и их загрузки в управляемые объекты приложения WPF начинается самое сложное. Фактически этот процесс состоит из двух этапов: 1. копирование данных из управляемых объектов в элементы управления для их отображения и редактирования; 2. обеспечение копирования изменений, внесенных в данные с помощью элементов управления, обратно в управляемые объекты. Чтобы упростить разработку приложений, платформа WPF предоставляет эффективный механизм привязки данных для автоматического выполнения этих действий. Основной элемент механизма привязки данных — класс Binding , задачей которого является привязка элемента управления Графика и анимация Платформа WPF предоставляет широкий и гибкий набор графических функций, который обладает перечисленными ниже преимуществами. Независимость графики от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, размер которого составляет 1/96 дюйма. Это создает основу для независимой от разрешения и аппаратной платформы отрисовки. Каждый аппаратно-независимый пиксель автоматически масштабируется в соответствии с заданным в системе количеством точек на дюйм (DPI). Повышение точности. Система координат WPF основана на числах двойной точности с плавающей запятой, а не числах одинарной точности. Значения преобразования и прозрачности также выражаются числами двойной точности. Платформа WPF также поддерживает широкую цветовую палитру (scRGB) и имеет встроенную поддержку управления входными данными из разных цветовых схем. Расширенная поддержка графики и анимации. Платформа WPF упрощает программирование графики, автоматически управляя анимированными сценами. Вам не нужно беспокоиться об обработке сцен, циклах отрисовки и билинейной интерполяции. Кроме того, WPF обеспечивает поддержку проверки попадания и полную поддержку альфа-версии компоновки. Аппаратное ускорение. Система графики WPF использует возможности графического оборудования, чтобы снизить нагрузку на ЦП. Двумерная графика WPF предоставляет библиотеку стандартных векторных двумерных фигур, таких как прямоугольники и эллипсы. Фигуры предназначены не только для отображения. В них реализованы многие возможности элементов управления, включая ввод с клавиатуры и с помощью мыши. Двумерные фигуры, предоставляемые WPF, включают в себя стандартный набор базовых фигур. Однако вам может потребоваться создать собственные фигуры, чтобы упростить разработку пользовательского интерфейса. WPF предоставляет геометрические объекты для создания пользовательской фигуры, которую можно нарисовать напрямую, применять как кисть или использовать для обрезки других фигур и элементов управления. Трехмерная отрисовка Платформа WPF также предоставляет возможности трехмерной отрисовки, которые интегрированы с возможностями двумерной графики, что позволяет создавать более интересные и яркие пользовательские интерфейсы. Например, на рисунке ниже показаны двумерные изображения, наложенные на трехмерные объекты.