Что это простыми словами
WPF — это инструмент для создания программ, которые запускаются на компьютере с Windows. Не сайты, не мобильные приложения, а именно настольные программы: текстовые редакторы, плееры, бухгалтерия, кассовые системы, программы управления оборудованием.
Аналогия: как React помогает собирать сайт из готовых блоков, так WPF помогает собирать программу для Windows из кнопок, форм, таблиц и графики. Интерфейс описывают отдельно от логики — дизайнер рисует внешний вид, программист пишет код, и они не мешают друг другу.
Полное название — Windows Presentation Foundation. Создан Microsoft как замена старому WinForms.
Официальное определение
Теперь, когда суть понятна, вот как WPF описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме.
«WPF — декларативный фреймворк для построения desktop-приложений на Windows с использованием XAML-разметки, data binding и паттерна MVVM».
Разберём по словам. «Desktop-приложения» — программы, которые устанавливают и запускают на компьютере, а не открывают в браузере. «Декларативный» — разработчик описывает, каким должен быть интерфейс, а не расписывает пошагово, как его нарисовать. «XAML» — язык разметки для описания интерфейса, похож на HTML для сайтов. «Data binding» — автоматическая связь данных с элементами интерфейса: изменилось число в коде — обновилось на экране, и наоборот. «MVVM» — способ разделения интерфейса и логики, чтобы дизайнер и программист работали независимо.
Зачем нужен и какую задачу решает
До WPF программы для Windows делали на WinForms — старой технологии с ограниченными возможностями дизайна. Хотели красивую кнопку с тенью и анимацией — приходилось мучиться. WPF это исправил: современная графика, плавные переходы, гибкая вёрстка, поддержка сенсорных экранов и 3D — всё встроено.
Главная боль, которую решает WPF: разделение внешнего вида и логики. Дизайнер меняет интерфейс в XAML, программист пишет код — они не ломают друг другу работу. Это особенно важно в больших сложных программах: ERP-системы, медицинские приложения, инженерное ПО.
К кому относится: язык, специальность, экосистема
WPF работает на языке C#. Специальность — desktop-разработчик или «WPF-разработчик». Это не backend и не веб: человек делает программы, которые живут на компьютере пользователя.
Важно: C# — кросс-доменный язык. На нём пишут backend (ASP.NET Core), игры (Unity), мобильные приложения (MAUI) и desktop (WPF). «Знаю C#» — недостаточная информация: backend-разработчик на C# и WPF-разработчик — это разные люди с разным опытом.
Экосистема WPF:
XAML — язык разметки интерфейса (как HTML, но для desktop).
Prism, Caliburn.Micro — библиотеки, упрощающие работу с MVVM и модульность.
MaterialDesignInXaml, MahApps.Metro — готовые наборы красивых элементов интерфейса.
Entity Framework — работа с базами данных (общая технология для всего мира C#).
С чем взаимозаменяем
Главные конкуренты WPF в мире C#:
WinForms — старая технология Microsoft. Проще WPF, но возможностей меньше. Новые проекты на WinForms почти не начинают, но существующих приложений много, их нужно поддерживать.
MAUI — новая технология Microsoft для кроссплатформенных приложений (Windows, macOS, Android, iOS). Заменяет Xamarin. Microsoft продвигает MAUI как будущее, но WPF по-прежнему популярен для чисто Windows-приложений.
За пределами C#: Electron (на веб-технологиях), Qt (на C++), JavaFX (на Java).
Переход между WPF, WinForms и MAUI дорогой: они устроены по-разному, опыт переносится частично. WPF-разработчик не равен MAUI-разработчику, даже если оба знают C#. Это повод отсеивать при найме.
Что не путать
WPF ≠ WinForms: это два разных фреймворка для desktop. WinForms — старый и простой, WPF — современный и гибкий. Оба на C#, оба для Windows.
WPF ≠ ASP.NET Core: ASP.NET — это веб-разработка (сайты и API), WPF — desktop-программы. Оба на C#, но задачи и специальности разные.
WPF ≠ MAUI: MAUI — новая кроссплатформенная технология (Windows, macOS, мобильные), WPF — только Windows desktop. Опыт между ними переносится не полностью.
WPF = только Windows: на macOS и Linux WPF не работает (есть попытки портировать через Avalonia, но это другой проект).
«Знаю C#» ≠ «знаю WPF»: C# используется в backend, играх, мобильной разработке и desktop. Кандидат с опытом C# в backend не подойдёт на WPF-вакансию без дополнительного опыта.
Насколько это важно при отборе
Короткий ответ: для desktop-вакансий — жёсткий фильтр.
Если вакансия требует WPF, это значит «делать desktop-программы для Windows». Опыт с WPF критичен, потому что это специфическая область: XAML, data binding, MVVM, работа с desktop API — всё это нужно знать. Предлагать на такую вакансию backend-разработчика на C# или Unity-разработчика — ошибка: язык один, а задачи и инструменты совсем другие.
И наоборот: если ищете backend-разработчика на C# (ASP.NET Core), опыт с WPF не поможет. Отсеивать кандидатов по фреймворку — нормальная практика.
Отдельная ситуация: WPF против WinForms или MAUI. Если кандидат знает WinForms, но не WPF — переход возможен, но займёт время. MVVM и XAML придётся учить с нуля. Если знает MAUI — ближе к WPF (оба используют XAML), но разница всё равно есть.
Библиотеки внутри WPF (Prism, Caliburn.Micro, MahApps) взаимозаменяемы: требовать конкретную при наличии опыта с аналогом — перебор.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.