WPF-vejledning for begyndere
โก Smart opsummering
WPF (Windows Prรฆsentation Foundation) er Microsofts ramme for at opbygge rige Windows Desktop-applikationer. Begyndere lรฆrer, hvordan XAML, databinding og hardwareaccelereret grafik kombineres for at skabe skalerbare, visuelt rige brugergrรฆnseflader med mindre kode.

Hvad er WPF?
WPF er en ramme for at bygge Windows applikationer, der giver udviklere mulighed for at skabe omfattende brugergrรฆnseflader med 3D-animationer og fyldige farver ved hjรฆlp af mindre kodekompleksitet. Det er en vektorbaseret renderingmotor, der bruger hardwareaccelerationen fra moderne grafikkort, hvilket gรธr brugergrรฆnsefladen hurtigere og meget skalerbar. WPF stรฅr for Windows Prรฆsentation Foundation.
WPF kan betragtes som en videreudvikling af WinForms. Det tilbyder et brugervenligt grafisk visningssystem til Windows og tilbyder en ren adskillelse mellem brugergrรฆnseflade og forretningslogik.
WPF-applikationer implementeres typisk som enkeltstรฅende skrivebordsprogrammer, og de kan ogsรฅ hostes som indlejrede objekter i andre applikationer.
Hvorfor WPF?
Der er mange grunde til at bruge WPF-platformen. Nogle fremtrรฆdende er:
- En ideel platform at bruge, hvis du har brug for at hรฅndtere forskellige medietyper
- WPF giver dig mulighed for at oprette en brugergrรฆnseflade med et skin. Det hjรฆlper dig ogsรฅ, nรฅr du skal indlรฆse en del af brugergrรฆnsefladen eller vil binde XML-data.
- Det giver dig mulighed for at drage fordel af det store .NET-klassebibliotek, som det er bygget pรฅ .NET teknologi
- Oplรธsningsuafhรฆngighed, sรฅ applikationer udviklet med WPF kan kรธre pรฅ smรฅ tabletskรฆrme eller en 20-tommer skรฆrm
- WPF bygger pรฅ DirectX i stedet for WinAPI. Det bruger klientcomputerens grafiksystem og tilbyder derfor stรธrre grafisk gengivelseskraft.
- Understรธtter en flowdokumentmodel, der muliggรธr layout med "desktop publishing"-kvalitet
- Udseende og adfรฆrd er lรธst forbundet. Dette giver designere og udviklere mulighed for at arbejde pรฅ to separate modeller
- I WPF-frameworket kan du grafisk designe vรฆrktรธjer ved hjรฆlp af simple XML-dokumenter i stedet for at parse kode.
- Giver dig mulighed for at bruge hardwareacceleration til at tegne GUI for bedre ydeevne
Lad os derefter se pรฅ, hvordan rammerne har udviklet sig over tid.
WPF's historie
Windows 1.0 var det fรธrste GUI-miljรธ fra MicrosoftDet fungerede som et lag oven pรฅ DOS og var afhรฆngig af GDI- og USER-systemerne til grafik og brugergrรฆnseflade.
DirectX blev introduceret i 1995 som et hรธjtydende grafiksystem rettet mod spil og andre grafikrelaterede miljรธer. Gennem รฅrene blev der udgivet mange versioner, og DirectX 9 leverede et bibliotek, der kunne bruges med administreret .NET-kode.
| WPF version | Udgivelsesรฅr | .Net-version | Visual Studio version | Funktionalitet |
|---|---|---|---|---|
| 3.0 | 2006 | 3.0 | N / A | Fรธrste udgivelse. WPF-udvikling kan dog udfรธres med VS 2005. |
| 3.5 | 2007 | 3.5 | US 2008 | รndringer og forbedringer i: Applikationsmodel, binding, kontroller, dokumenter, annotationer og 3D-brugergrรฆnsefladeelementer. |
| 3.5 SP1 | 2008 | 3.5 SP1 | N / A | Native splash screen support. Ny webbrowser kontrol, DirectX pixel shader understรธttelse. |
| 4.0 | 2010 | 4.0 | US 2010 | Nye kontroller: Kalender, DataGrid, DatePicker. Understรธttelse af multi-touch og manipulation. |
| 4.5 | 2012 | 4.5 | US 2012 | Hurtigere opstart, forbedret ydeevne ved visning af store datasรฆt. Nyt bรฅndkontrolelement og INotifyDataErrorInfo-grรฆnseflade til datavalidering. |
| 4.5.1 | 2013 | 4.5.1 | US 2013 | Mindre forbedringer af ydeevne og pรฅlidelighed. |
| 4.5.2 | 2014 | 4.5.2 | NA | Ingen stรธrre รฆndring |
| 4.6 | 2015 | 4.6 | US 2015 | Gennemsigtig stรธtte til bรธrnevinduer HDPI og Touch forbedringer |
| 4.8 | 2019 | 4.8 | US 2019 | Sidste stรธrre .NET Framework-udgivelse med rettelser til hรธj DPI og forbedringer af tilgรฆngelighed. |
| .NET Core 3.0 og fremefter | 2019-foreliggende | .NET Core 3.0 til .NET 10 | VS 2019/2022 | WPF bliver open source og leveres med moderne .NET (applikationer forbliver Windows-kun). |
WPF versioneres ikke lรฆngere separat fra .NET. Siden 2019 er det blevet leveret som en open source-komponent i den moderne .NET-platform, og den nuvรฆrende udgivelse er inkluderet i .NET 10, som ankom i november 2025 som en langsigtet supportversion (LTS).
Funktioner af WPF
Diagrammet nedenfor grupperer de vigtigste WPF-funktioner, og er anfรธrt i detaljer efter det.

- Dokumenter og udskrivning
- Sikkerhed, tilgรฆngelighed og lokalisering
- Tilbyder interoperabilitet med Windows Former kontroller
- Direct3D bruges i grafiske applikationer, hvor ydeevne er vigtig
- Bruger videokortets hardware til gengivelse
- Vektorbaseret grafik giver dig mulighed for at skalere din applikation uden tab af kvalitet
- WPF understรธtter et floating-point logisk pixelsystem og 32-bit ARGB-farve
- Omdefiner stilarter og kontrolskabeloner
- Opbygning af internationale skrifttyper fra sammensatte skrifttyper
- WPF-tekstgengivelse udnytter ClearType-teknologi
- Giver dig mulighed for at bruge caching-teknikken med forudgengivet tekst i videohukommelsen
- Ressourcebaseret tilgang til alle kontrolfunktioner
- Prรฆsentationstimere initialiseres og administreres af WPF
- Forholdet mellem video og animation understรธttes ogsรฅ
- I WPF er en stil et sรฆt egenskaber, der skal anvendes pรฅ indhold, der bruges til visuel gengivelse.
- Skabeloner i WPF hjรฆlper dig med at รฆndre brugergrรฆnsefladen i dit dokument
- Kommandoer er mere abstract og lรธst koblede versioner af begivenhederne
- WPF-understรธttelse af kommandoer reducerer mรฆngden af โโkode, vi skal skrive
Nรฆste i denne WPF C# tutorial, vil vi lรฆre om WPF-kernetyper og -infrastruktur.
WPF-kernetyper og -infrastrukturer
Klasser i WPF er opdelt i fire forskellige typer:
- UIElement
- FrameworkElement
- ContentElement
- FrameworkContentElement
Disse klasser er kendt som basiselementklasser. De danner grundlaget for en model til at komponere brugergrรฆnseflader.
WPF-brugergrรฆnseflader er sammensat af elementer, der er samlet i et trรฆhierarki kaldet elementtrรฆet. Elementtrรฆet er en intuitiv mรฅde at layoute brugergrรฆnseflader pรฅ, og det er den struktur, hvorigennem du fรฅr effektive brugergrรฆnsefladetjenester.
XAML
Extensible Application Markup Language, som kaldes "XAML" (udtales "zammel"), er en deklarativ mรฅde at definere brugergrรฆnseflader pรฅ.
Her er XAML-definitionen af โโen simpel knap:
<Button FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" > Say Hello Guru99</Button>
Fordele ved at bruge XAML-sproget:
- XAML adskiller frontend-udseende fra backend-logik
- XAML er den nemmeste metode til at reprรฆsentere brugergrรฆnseflader
- XAML fungerer effektivt med designvรฆrktรธjer
Controls
WPF-frameworket understรธtter mange nyttige kontroller som:
- Redigeringskontroller som tekstBox, KontrollereBox, Radio knap
- Listekontroller sรฅsom ListBox, Listevisning, Trรฆvisning
- Brugeroplysninger sรฅsom Label, WPF ProgressBar, ToolTip
- Handling sรฅsom menu, knap og vรฆrktรธjslinje
- Udseende som Border, WPF Image og Viewbox
- Almindelige dialogbokse som f.eks. ร bnFilDialog og UdskrivDialog
- Containere som TabControl, ScrollBar og GroupBox
- Layouts som DockPanel, StackPanel og Grid
- Navigation sรฅsom Frame og Hyperlink
Udseendet af kontroller kan tilpasses med stilarter og skabeloner uden programmering. Du kan ogsรฅ oprette en brugerdefineret kontrol ved at udlede en ny klasse fra en passende basisklasse.
Udseende
WPF giver en funktion til at tilpasse udseendet af din applikation. Det giver dig mulighed for at indstille objekter og vรฆrdier for ting som skrifttyper, baggrunde osv.
Styles-funktionen giver dig mulighed for at standardisere pรฅ et specifikt look for hele produktet. Det giver dig mulighed for at erstatte standardudseendet, mens du bevarer standardadfรฆrden.
En dataskabelon giver dig mulighed for at styre standardvisualiseringen af โโbundne data. Ved hjรฆlp af temaer kan du nemt anvende operativsystemets visuelle stilarter.
Layout & Paneler
Layout hjรฆlper dig med den korrekte placering og stรธrrelse af kontrolelementer. Det er en del af processen med at komponere prรฆsentationen for brugeren. WPF-frameworket letter layoutprocessen og giver bedre tilpasningsevne til brugergrรฆnsefladen.
Layoutinfrastrukturen tilbydes af fem hovedklasser: 1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid og 5) Canvas
Grafik
WPF leverer et forbedret grafiksystem:
- WPF bruger enhedsuafhรฆngige enheder, hvilket muliggรธr oplรธsning og enhedsuafhรฆngighed. Hver enhedsuafhรฆngig pixel skalerer automatisk med systemets punkter-per-tomme-indstilling.
- WPF bruger dobbelt i stedet for float og understรธtter en bredere vifte af farver
- WPF-grafikmotoren er designet pรฅ en sรฅdan mรฅde, at den kan drage fordel af grafikhardware, nรฅr den er tilgรฆngelig
Dokumenter og udskrivning
WPF-rammevรฆrket tilbyder tre typer dokumenter:
- Faste dokumenter: Denne type dokument understรธtter WYSIWYG prรฆsentation.
- Flow dokumenter: Giver dig mulighed for at justere og omforme indhold baseret pรฅ kรธretidsvariabler som vinduesstรธrrelse og enhedsoplรธsning.
- XPS-dokumenter: En pagineret reprรฆsentation af elektronisk papir i et XML-baseret format. XPS er et รฅbent, standardiseret dokumentformat.
WPF giver bedre kontrol over printsystemet, herunder fjernudskrivning og kรธer. Derudover kan XPS-dokumenter udskrives direkte uden at konvertere dem til et printformat.
Nu hvor vi har dรฆkket byggestenene, lad os se, hvordan disse dele passer sammen indvendigt.
WPF Architecture
WPF er en del af .NET framework. Det indeholder bรฅde administreret og ikke-administreret kode. De vigtige komponenter i WPF-arkitekturen er forklaret i figuren nedenfor:
Komponenter af WPF-arkitektur
- PrรฆsentationsrammeHjรฆlper dig med at oprette elementer pรฅ รธverste niveau som kontrolelementer, typografier, layout, vinduer osv.
- PresentationCoreDen indeholder basistyper som UIElement og Visual, hvorfra alle kontrolelementer og former i PresentationFramework.dll er afledt.
- CLR: Det gรธr udviklingsprocessen produktiv ved at tilbyde funktioner som hukommelsesstyring, fejlhรฅndtering mv.
- Milcore: Milcore er en del af den ikke-administrerede kode, som tilbyder tรฆt integration med DirectX.
- DirectX: Det er lavniveau-API'en, der gengiver grafikken i WPF. DirectX interagerer med drivere og gengiver indholdet.
- Bruger32: Det er en kerne-API, der er meget brugt af mange programmer. Den administrerer hukommelses- og processeparation. User32 hjรฆlper dig med at bestemme, hvilket element der skal placeres hvor pรฅ skรฆrmen.
- Kernel: Input stammer fra et signal pรฅ en kernetilstandsdriver og bliver dirigeret til den korrekte proces ved at oprette forbindelse til Windows kerne og User32.
WPF-databinding
Databinding er et af de mest kraftfulde koncepter i WPF. I stedet for at skrive kode, der manuelt kopierer vรฆrdier mellem kontrolelementer og objekter, deklarerer du en forbindelse i XAML, og WPF holder begge sider synkroniseret automatisk. For eksempel:
<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />
WPF understรธtter fire bindingstilstande:
- Envejskรธrsel: Kontrollen opdateres, nรฅr kildedataene รฆndres
- Tovejs: รndringer flyder i begge retninger mellem kontrol og kilde
- Engangs: Styringen lรฆser kun kildevรฆrdien รฉn gang, ved indlรฆsning
- EnvejsTilKilde: Kontrollen skubber sin vรฆrdi til kilden, aldrig omvendt
Databinding er ogsรฅ motoren bag MVVM (Model-View-ViewModel)-mรธnsteret, den mest almindelige arkitektur til professionelle WPF-applikationer, fordi det lader visningen forblive i XAML, mens logikken lever i testbare C#-klasser.
๐ก Tip: Implementer INotifyPropertyChanged-grรฆnsefladen pรฅ dine dataklasser. Uden den opdateres brugergrรฆnsefladen ikke, nรฅr egenskabsvรฆrdier รฆndres i koden.
WPF installation
Se dette link for at installere WPF: https://www.guru99.com/download-install-visual-studio.html
I denne WPF-applikationsvejledning vil vi derefter bygge vores fรธrste WPF-applikation.
Hvordan opretter du din fรธrste WPF-applikation?
I dette WPF-eksempel vil vi udvikle en grundlรฆggende WPF-applikation. Lad os starte den simple implementering ved at fรธlge trinnene i WPF-applikationseksemplet nedenfor.
Trin 1) I Visual Studio skal du gรฅ til Filer > Ny > Projekt
Trin 2) I det nye projektvindue
- Vรฆlg WPF App
- Indtast navn som "MyWPF"
- klik pรฅ OK
Trin 3) Visual Studio opretter som standard to filer
- XAML-fil (MainWindow.xaml)
- CS-fil (MainWindow.xaml.cs)
MainWindow.xaml har
- Et designvindue
- XAML fil
I XAML-vinduet skrives fรธlgende tags som standard:
Grid er det fรธrste element som standard.
MainWindow.xaml.cs indeholder den tilsvarende bagvedliggende kode til XAML-designfilen:
Trin 4) I vรฆrktรธjskassen,
- Trรฆk tekstenBox element til designvinduet
- En tekstBox vises i designvinduet
- Du vil se XAML-kode for tekstenBox tilfรธjet
Trin 5) Skift teksten til โFรธrste WPF-programโ.
Trin 6) Klik pรฅ Start-knappen
Trin 7) Du vil se et vindue i outputtet
Tillykke! Du har designet og oprettet din fรธrste WPF-applikation. Nรฆste i denne WPF for begyndere tutorial, vil vi se forskellen mellem WPF og WinForms.
WPF vs. WinForms
| WPF | WinForms |
|---|---|
| Det er en nyere ramme, sรฅ den er mere i overensstemmelse med de nuvรฆrende standarder. | Den er รฆldre, sรฅ den er mere gennemprรธvet. |
| Det er fleksibelt og funktionsrigt. Du kan designe meget omfattende applikationer uden at skulle kode eller kรธbe kontrolelementer. | Ikke sรฅ funktionsrig |
| Udviklere af 3rd Partykontroller fokuserer pรฅ kompatibilitet med WPF, da det er fremtiden. | Der er mange tredjepartskontroller, som du kan kรธbe eller fรฅ gratis. |
| XAML giver dig mulighed for nemt at oprette og redigere din GUI. Det gรธr det muligt at fordele arbejdet mellem en designer (XAML) og en programmรธr (C#, VB.NET osv.). | In Windows Formularer, al koden er skrevet รฉt sted. |
| XAML-fรฆrdigheder overfรธres direkte til nyere frameworks som WinUI 3, .NET MAUI og Avalonia UI. | WinForms-fรฆrdigheder gรฆlder primรฆrt for klassiske Windows desktop-udvikling. |
| WPF's in-box kontrolsuite er begrรฆnset | Indbyggede kontroller er meget kraftfulde |
Type applikationer bygget med WPF
- WPF bruges til standalone Windows Desktopapplikationer sรฅsom virksomhedsbaserede vรฆrktรธjer, dashboards, handelsterminaler og designsoftware
- Windows Formularer og WPF-sider kan eksistere side om side i den samme applikation
- Du kan udvikle applikationer i side-/vinduesnavigationsstil
WPF i Moderne .NET
Microsoft open source WPF i december 2018, og siden .NET Core 3.0 (2019) er frameworket blevet leveret med alle moderne .NET-udgivelser, op til og inklusive .NET 10. Flytning af en applikation til moderne .NET giver hurtigere opstart, enklere implementering gennem selvstรฆndig publicering og adgang til aktuelle C#-sprogfunktioner, mens WPF-programmeringsmodellen forbliver den samme.
WPF forbliver Windows-kun. Hvis du vรฆlger et desktop-framework i dag, hjรฆlper denne sammenligning:
| Framework | Bedste For |
|---|---|
| WPF | Moden, funktionsrig Windows desktopapplikationer med et enormt รธkosystem |
| WindowsUI 3 | Nye applikationer mรฅlrettet den moderne Windows 11 udseende og fรธlelse |
| .NET MAUI | Cross-platform applikationer, der spรฆnder over Windows, macOS, Android, og iOS |
Fordi WPF aktivt vedligeholdes og er dybt integreret i virksomhedssoftware, er det fortsat en praktisk investering at lรฆre det. Nรฅr du fรธrst er blevet fortrolig med at bygge disse applikationer, er det vรฆrd at รธve dig i de mest almindelige WPF-jobsamtalespรธrgsmรฅl at fastlรฅse koncepter som XAML, databinding og det visuelle trรฆ.









