WPF урок за начинаещи
⚡ Умно обобщение
WPF (Windows Презентация Foundation) е Microsoftрамката на [име на организация] за изграждане на богати Windows настолни приложения. Начинаещите научават как XAML, обвързване на данни и хардуерно ускорена графика се комбинират, за да създадат мащабируеми, визуално богати потребителски интерфейси с по-малко код.

Какво е WPF?
WPF е рамка за изграждане Windows приложения, които позволяват на разработчиците да създават богати потребителски интерфейси с 3D анимации и наситени цветове, използвайки по-малко сложност на кода. Това е векторен рендеринг енджин, който използва хардуерното ускорение на съвременните графични карти, което прави потребителския интерфейс по-бърз и лесно мащабируем. WPF е съкращение от Windows Презентация Foundation.
WPF може да се счита за еволюция спрямо WinForms. Той предоставя лесна за работа графична система за показване. Windows и предлага ясно разделение между потребителския интерфейс и бизнес логиката.
WPF приложенията обикновено се разполагат като самостоятелни настолни програми и могат да бъдат хоствани и като вградени обекти в други приложения.
Защо WPF?
Има много причини за използване на платформата WPF. Някои от най-важните са:
- Идеална платформа за използване, ако трябва да работите с различни видове медии
- WPF ви позволява да създавате потребителски интерфейс с различни цветове. Той ви помага и когато трябва да заредите част от потребителския интерфейс или искате да свържете XML данни.
- Позволява ви да се възползвате от голямата библиотека от класове .NET, върху която е изградена .NET технология
- Независимост от резолюцията, така че приложенията, разработени с помощта на WPF, могат да работят на малки екрани на таблети или 20-инчов монитор
- WPF се основава на DirectX вместо на WinAPI. Използва графичната система на клиентския компютър, като по този начин предлага по-голяма графична мощност за рендиране.
- Поддържа модел на поточен документ, който позволява оформление с качество на „desktop publishing“
- Външният вид и поведението са слабо свързани. Това позволява на дизайнерите и разработчиците да работят върху два отделни модела.
- В WPF рамката можете да проектирате графично инструменти, използвайки прости XML документи, вместо да анализирате код.
- Позволява ви да използвате хардуерно ускорение за изчертаване на GUI за по-добра производителност
След това нека видим как рамката се е развивала с течение на времето.
История на WPF
Windows 1.0 беше първата GUI среда от MicrosoftРаботеше като слой върху DOS, разчитайки на системите GDI и USER за графика и потребителски интерфейс.
DirectX беше представен през 1995 г. като високопроизводителна графична система, насочена към игри и други графични среди. През годините бяха пуснати много версии, а DirectX 9 предостави библиотека, която можеше да се използва с управляван .NET код.
| WPF версия | Година на издаване | .Net версия | Версия на Visual Studio | Характеристики: |
|---|---|---|---|---|
| 3.0 | 2006 | 3.0 | N / A | Първоначално издание. Разработката на WPF обаче може да се извърши с VS 2005. |
| 3.5 | 2007 | 3.5 | VS 2008 г | Модификация и подобрения в: Модел на приложението, свързване, контроли, документи, анотации и 3D елементи на потребителския интерфейс. |
| 3.5 SP1 | 2008 | 3.5 SP1 | N / A | Поддръжка на собствен начален екран. Нов контрол на уеб браузъра, поддръжка на DirectX пикселен шейдър. |
| 4.0 | 2010 | 4.0 | VS 2010 г | Нови контроли: Ка��ендар, DataGrid, DatePicker. Поддръжка на Multi-Touch и манипулация. |
| 4.5 | 2012 | 4.5 | VS 2012 г | По-бързо стартиране, подобрена производителност при показване на големи набори от данни. Нов контрол на лентата и интерфейс INotifyDataErrorInfo за проверка на данни. |
| 4.5.1 | 2013 | 4.5.1 | VS 2013 г | Незначителни подобрения в производителността и надеждността. |
| 4.5.2 | 2014 | 4.5.2 | NA | Без голяма промяна |
| 4.6 | 2015 | 4.6 | VS 2015 г | Прозрачна опора за детски прозорец Подобрения на HDPI и Touch |
| 4.8 | 2019 | 4.8 | VS 2019 г | Последна голяма версия на .NET Framework, с корекции за висока резолюция и подобрения в достъпността. |
| .NET Core 3.0 и по-нови версии | 2019-настоящото | .NET Core 3.0 до .NET 10 | VS 2019/2022 | WPF става с отворен код и се доставя с модерния .NET (приложенията остават Windows-само). |
WPF вече не се версионира отделно от .NET. От 2019 г. насам той се доставя като компонент с отворен код на съвременната .NET платформа, а текущата версия е включена в .NET 10, който пристигна през ноември 2025 г. като дългосрочна поддръжка (LTS) версия.
Характеристики на WPF
Диаграмата по-долу групира основните възможности на WPF, изброени подробно след нея.

- Документи и печат
- Сигурност, достъпност и локализация
- Предлага оперативна съвместимост с Windows Контроли за формуляри
- Direct3D се използва в графични приложения, където производителността е важна
- Използва хардуера на видеокартата за изобразяване
- Векторната графика ви позволява да мащабирате приложението си без загуба на качество
- WPF поддържа логическа пикселна система с плаваща запетая и 32-битов ARGB цвят.
- Предефинирайте стилове и контролни шаблони
- Изграждане на международни шрифтове от съставни шрифтове
- WPF рендирането на текст използва технологията ClearType
- Позволява ви да използвате техниката на кеширане на предварително изобразен текст във видео паметта
- Ресурсно-базиран подход за всеки контрол
- Таймерите за презентации се инициализират и управляват от WPF
- Връзката между видео и анимация също се поддържа
- В WPF, стилът е набор от свойства, които трябва да се прилагат към съдържание, използвано за визуално рендиране.
- Шаблоните в WPF ви помагат да промените потребителския интерфейс на вашия документ
- Командите са по-скоро коремни мускулиtract и слабо свързана версия на събитията
- Поддръжката на WPF за команди намалява количеството код, който трябва да напишем
Следва в този WPF C# урок, ще научим за типовете ядра и инфраструктурата на WPF.
WPF основни типове и инфраструктури
Класовете в WPF са разделени на четири различни типа:
- UIElement
- FrameworkElement
- ContentElement
- FrameworkContentElement
Тези класове са известни като класове базови елементи. Те осигуряват основата за модел на композиране на потребителски интерфейси.
Потребителските интерфейси на WPF са съставени от елементи, които са сглобени в дървовидна йерархия, наречена дърво на елементите. Дървото на елементите е интуитивен начин за оформление на потребителски интерфейси и е структурата, чрез която получавате мощни UI услуги.
xaml
Разширяемият език за маркиране на приложения (Extensible Application Markup Language, или XAML, произнася се „замел“) е декларативен начин за дефиниране на потребителски интерфейси.
Ето XAML дефиницията на прост бутон:
<Button FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" > Say Hello Guru99</Button>
Предимства на използването на езика XAML:
- XAML разделя външния вид на предния край от логиката на задния край
- XAML е най-лесният метод за представяне на потребителски интерфейси
- XAML работи ефективно с инструменти за проектиране
Контроли
WPF рамката поддържа много полезни контроли, като например:
- Контроли за редактиране като текстBox, ПроверетеBox, RadioButton
- Списъчни контроли като списъкBox, ListView, TreeView
- Потребителска информация като етикет, WPF ProgressBar, подсказка
- Действие като меню, бутон и лента с инструменти
- Изгледи като Border, WPF Image и Viewbox
- Често срещани диалогови прозорци, като например OpenFileDialog и PrintDialog
- Контейнери като TabControl, ScrollBar и GroupBox
- Оформления като DockPanel, StackPanel и Grid
- Навигация като рамка и хипервръзка
Външният вид на контролите може да се персонализира със стилове и шаблони без програмиране. Можете също да създадете персонализирана контрола, като извлечете нов клас от подходящ базов клас.
Външен вид
WPF предоставя функция за персонализиране на външния вид на вашето приложение. Тя ви позволява да задавате обекти и стойности за неща като шрифтове, фонове и т.н.
Функцията за стилове ви позволява да стандартизирате конкретен вид за целия продукт. Позволява ви да замените външния вид по подразбиране, като същевременно запазите поведението му по подразбиране.
Шаблонът за данни ви позволява да контролирате визуализацията по подразбиране на свързаните данни. С помощта на теми можете лесно да прилагате визуалните стилове на операционната система.
Оформление и панели
Оформлението ви помага при правилното позициониране и оразмеряване на контролите. То е част от процеса на композиране на презентацията за потребителя. WPF рамката улеснява процеса на оформление и предлага по-добра адаптивност на външния вид на потребителския интерфейс.
Инфраструктурата за оформление се предлага от пет основни класа: 1) StackPanel, 2) DockPanel, 3) WrapPanel, 4) Grid и 5) Canvas
Graphics
WPF предоставя подобрена графична система:
- WPF използва независими от устройството единици, което позволява разделителна способност и независимост от устройството. Всеки независим от устройството пиксел автоматично се мащабира с настройката за точки на инч на системата.
- WPF използва double вместо float и поддържа по-широк набор от цветове
- Графичният двигател на WPF е проектиран по такъв начин, че да може да се възползва от графичния хардуер, когато е наличен
Документи и печат
WPF рамката предлага три вида документи:
- Фиксирани документи: Този тип документ поддържа WYSIWYG презентация.
- Поточни документи: Позволява ви да коригирате и преформатирате съдържание въз основа на променливи по време на изпълнение, като размер на прозореца и разделителна способност на устройството.
- XPS документи: Странично представяне на електронна хартия във формат, базиран на XML. XPS е отворен, стандартизиран формат на документи.
WPF позволява по-добър контрол върху системата за печат, включително отдалечен печат и опашки. Освен това, XPS документи могат да се отпечатват директно, без да се преобразуват във формат за печат.
След като раз��ледахме градивните елементи, нека видим как тези части се съчетават вътрешно.
WPF Archiтекстура
WPF е част от .NET framework. Той съдържа както управляван, така и неуправляван код. Важните компоненти на WPF архитектурата са обяснени на фигурата по-долу:
Компоненти на WPF архитектурата
- PresentationFrameworkПомага ви да създавате елементи от най-високо ниво, като контроли, стилове, оформление, прозорци и др.
- PresentationCoreСъдържа базови типове като UIElement и Visual, от които са извлечени всички контроли и форми в PresentationFramework.dll.
- CLR: Това прави процеса на разработка продуктивен, като предлага функции като управление на паметта, обработка на грешки и др.
- Milcore: Milcore е част от неуправляемия код, който предлага тясна интеграция с DirectX.
- DirectX: Това е ниско ниво API, което рендира графиките на WPF. DirectX взаимодейства с драйверите и рендира съдържанието.
- потребител32: Това е основен API, който се използва широко от много програми. Той управлява паметта и разделянето на процесите. User32 ви помага да решите кой елемент ще бъде поставен къде на екрана.
- ядрото: Входните данни произхождат като сигнал от драйвер на устройство в режим на ядрото и се насочват към правилния процес чрез свързване с... Windows ядрото и User32.
WPF обвързване на данни
Обвързването на данни е една от най-мощните концепции в WPF. Вместо да пишете код, който ръчно копира стойности между контроли и обекти, декларирате връзка в XAML и WPF автоматично синхронизира двете страни. Например:
<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />
WPF поддържа четири режима на свързване:
- Еднопосочно: Контролът се актуализира, когато изходните данни се променят
- Двупосочно: Промените протичат в двете посоки между контрола и източника
- Еднократно: Контролът чете стойността на източника само веднъж, по време на зареждане
- ЕднопосочноДоИзточник: Контролът изпраща стойността си към източника, никога обратното.
Обвързването на данни е и двигателят зад модела MVVM (Model-View-ViewModel), най-разпространената архитектура за професионални WPF приложения, защото позволява на изгледа да остане в XAML, докато логиката се намира в тестваеми C# класове.
💡 Съвет: Имплементирайте интерфейса INotifyPropertyChanged във вашите класове данни. Без него потребителският интерфейс няма да се обновява, когато стойностите на свойствата се променят в кода.
WPF инсталация
Вижте тази връзка, за да инсталирате WPF: https://www.guru99.com/download-install-visual-studio.html
Следващата стъпка в този урок за WPF приложение е да изградим първото си WPF приложение.
Как да създадете първото си WPF приложение?
В този WPF пример ще разработим основно WPF приложение. Нека започнем с простата имплементация, като следваме стъпките, дадени в примера за WPF приложение по-долу.
Стъпка 1) В Visual Studio отидете на Файл > Нов > Проект
Стъпка 2) В новия прозорец на проекта
- Изберете WPF приложение
- Въведете име като „MyWPF“
- натиснете ОК
Стъпка 3) Visual Studio създава два файла по подразбиране
- XAML файл (MainWindow.xaml)
- CS файл (MainWindow.xaml.cs)
MainWindow.xaml има
- Прозорец за дизайн
- XAML файл
В XAML прозореца следните тагове се записват по подразбиране:
Мрежата е първият елемент по подразбиране.
MainWindow.xaml.cs съдържа съответния код за XAML файла с дизайн:
Стъпка 4) В кутията с инструменти,
- Плъзнете текстаBox елемент към прозореца на дизайна
- ТекстBox ще се появи в прозореца за проектиране
- Ще видите XAML код за текстаBox добави
Стъпка 5) Променете текста на „Първа WPF програма“.
Стъпка 6) Щракнете върху бутона Старт
Стъпка 7) Ще видите прозорец в изхода
честито! Вие сте проектирали и създали първото си WPF приложение. След това в този урок за WPF за начинаещи ще видим разликата между WPF и WinForms.
WPF срещу WinForms
| WPF | WinForms |
|---|---|
| Това е по-нова рамка, така че е по-съобразена с настоящите стандарти. | По-стар е, така че е по-изпитан и тестван. |
| Той е гъвкав и богат на функции. Можете да проектирате много богати приложения без кодиране или закупуване на контроли. | Не е толкова богат на функции |
| Разработчици на 3rd Контролите на партитата са фокусирани върху съвместимостта с WPF, тъй като това е бъдещето. | Има много контроли на трети страни, които можете да закупите или получите безплатно. |
| XAML ви позволява лесно да създавате и редактирате графичния си потребителски интерфейс. Той позволява работата да бъде разделена между дизайнер (XAML) и програмист (C#, VB.NET и др.). | In Windows Формуляри, целият код е написан на едно място. |
| XAML уменията се прехвърлят директно към по-нови рамки като WinUI 3, .NET MAUI и Avalonia UI. | Уменията на WinForms се отнасят главно за класическите Windows разработка на десктоп системи. |
| Вграденият контролен пакет на WPF е ограничен | Контролите в кутията са много мощни |
Тип приложения, създадени с WPF
- WPF се използва за самостоятелни цели Windows настолни приложения, като например корпоративни инструменти за бизнес, табла за управление, търговски терминали и софтуер за дизайн
- Windows Формуляри и WPF страници могат да съществуват едновременно в едно и също приложение
- Можете да разработвате приложения в стил навигация по страници/прозорци
WPF в Modern .NET
Microsoft WPF с отворен код през декември 2018 г. и от .NET Core 3.0 (2019 г.) насам рамката се доставя с всяка съвременна версия на .NET, до .NET 10 включително. Преместването на приложение към модерен .NET води до по-бързо стартиране, по-лесно внедряване чрез самостоятелно публикуване и достъп до текущите функции на езика C#, докато моделът на програмиране на WPF остава същият.
WPF остава Windows-само. Ако днес избирате десктоп фреймуърк, това сравнение ще ви помогне:
| Рамка | Най-добър за |
|---|---|
| WPF | Зрял, богат на функции Windows настолни приложения с огромна екосистема |
| WindowsUI 3 | Нови приложения, насочени към съвременния Windows 11 външен вид и усещане |
| .NET MAUI | Междуплатформени приложения, обхващащи Windows, macOS, Androidи iOS |
Тъй като WPF се поддържа активно и е дълбоко вграден в корпоративния софтуер, изучаването му си остава практична инвестиция. След като се почувстват�� комфортно в изграждането на тези приложения, си струва да практикувате най-често срещаните... Въпроси за интервю за WPF да се заключат концепции като XAML, обвързване на данни и визуално дърво.









