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.

  • ๐Ÿงญ Foundation: WPF er et vektorbaseret, DirectX-drevet UI-framework i .NET-platformen.
  • ๐ŸŽจ XAML-markering: Deklarativ XML-syntaks adskiller interfacedesign fra C# forretningslogik.
  • ๐Ÿงฑ Archilรฆre: PresentationFramework, PresentationCore og Milcore samarbejder oven pรฅ DirectX om rendering.
  • ๐Ÿ”— Databinding: Indbygget binding forbinder kontrolelementer til datakilder og driver MVVM-mรธnsteret.
  • ๐Ÿ› ๏ธ Praktisk start: Med Visual Studio-skabeloner kan du bygge og kรธre din fรธrste WPF-app i syv trin.
  • ๐Ÿš€ Moderne relevans: WPF er open source og leveres med .NET 10 under langsigtet support.

WPF-vejledning for begyndere

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.

Funktioner af WPF
Funktioner af WPF
  • 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:

WPF Architecture

WPF Architecture

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

Visual Studio Fil-menu, der viser indstillingen Nyt projekt

Trin 2) I det nye projektvindue

  1. Vรฆlg WPF App
  2. Indtast navn som "MyWPF"
  3. klik pรฅ OK

Nyt projektvindue med WPF App-skabelon valgt

Trin 3) Visual Studio opretter som standard to filer

  • XAML-fil (MainWindow.xaml)
  • CS-fil (MainWindow.xaml.cs)

Solution Explorer, der viser MainWindow.xaml- og MainWindow.xaml.cs-filerne

MainWindow.xaml har

  1. Et designvindue
  2. XAML fil

MainWindow.xaml designvindue og XAML-editor i Visual Studio

I XAML-vinduet skrives fรธlgende tags som standard:

Standard XAML-tags genereret til et nyt WPF-vindue

Grid er det fรธrste element som standard.

MainWindow.xaml.cs indeholder den tilsvarende bagvedliggende kode til XAML-designfilen:

MainWindow.xaml.cs kode-bagved-fil til WPF-vinduet

Trin 4) I vรฆrktรธjskassen,

  1. Trรฆk tekstenBox element til designvinduet
  2. En tekstBox vises i designvinduet
  3. Du vil se XAML-kode for tekstenBox tilfรธjet

Trรฆk en tekstBox fra vรฆrktรธjskassen til WPF-designvinduet

Trin 5) Skift teksten til โ€œFรธrste WPF-programโ€.

Redigering af tekstBox tekstegenskab til First WPF Program

Trin 6) Klik pรฅ Start-knappen

Visual Studio Start-knappen til at kรธre WPF-applikationen

Trin 7) Du vil se et vindue i outputtet

Kรธrende WPF-programvindue, der viser teksten Fรธrste WPF-program

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รฆ.

Ofte Stillede Spรธrgsmรฅl

Du skal bruge XAML til at designe brugerfladen og C# (eller VB.NET) til applikationslogikken. Grundlรฆggende kendskab til objektorienteret programmering og .NET-klassebiblioteket gรธr det meget nemmere at lรฆre WPF.

Nej. WPF afhรฆnger af DirectX og Windows API'er, sรฅ det kรธrer kun pรฅ WindowsOvervej XAML-udvikling pรฅ tvรฆrs af platforme Avalonia brugergrรฆnseflade or .NET MAUI.

Ja. Vรฆrktรธjer som GitHub Copilot kan generere XAML-layouts, bindingsudtryk og stilarter fra kommentarer, hvilket fremskynder lรฆring og reducerer gentagen markup for begyndere.

Du kan integrere ML.NET til lokal maskinlรฆring eller ring til cloud AI-tjenester som f.eks. Azure OpenAI fra din C#-kode, og vis derefter resultaterne via standard WPF-databinding.

Ja. WPF er open source under MIT-licensen, og du kan bygge applikationer gratis med Visual Studio Community Edition.

Opsummer dette indlรฆg med: