WPF-opplæring for nybegynnere

⚡ Smart oppsummering

WPF (Windows Presentasjon Foundation) er Microsofts rammeverk for å bygge rike Windows skrivebordsapplikasjoner. Nybegynnere lærer hvordan XAML, databinding og maskinvareakselerert grafikk kombineres for å lage skalerbare, visuelt rike brukergrensesnitt med mindre kode.

  • 🧭 Foundation: WPF er et vektorbasert, DirectX-drevet UI-rammeverk i .NET-plattformen.
  • 🎨 XAML-markering: Deklarativ XML-syntaks skiller grensesnittdesign fra C# forretningslogikk.
  • 🧱 Archilære: PresentationFramework, PresentationCore og Milcore samarbeider over DirectX for gjengivelse.
  • 🔗 Databinding: Innebygd binding kobler kontroller til datakilder og driver MVVM-mønsteret.
  • 🛠️ Praktisk start: Med Visual Studio-maler kan du bygge og kjøre din første WPF-app i sju trinn.
  • 🚀 Moderne relevans: WPF er åpen kildekode og leveres med .NET 10 under langsiktig støtte.

WPF-opplæring for nybegynnere

Hva er WPF?

WPF er et rammeverk for å bygge Windows applikasjoner som lar utviklere lage rike brukergrensesnitt med 3D-animasjoner og rike farger med mindre kodekompleksitet. Det er en vektorbasert renderingsmotor som bruker maskinvareakselerasjonen til moderne grafikkort, noe som gjør brukergrensesnittet raskere og svært skalerbart. WPF står for Windows Presentasjon Foundation.

WPF kan betraktes som en videreutvikling av WinForms. Det tilbyr et brukervennlig grafisk visningssystem for Windows og tilbyr et rent skille mellom brukergrensesnitt og forretningslogikk.

WPF-applikasjoner distribueres vanligvis som frittstående skrivebordsprogrammer, og de kan også driftes som innebygde objekter i andre applikasjoner.

Hvorfor WPF?

Det er mange grunner til å bruke WPF-plattformen. Noen fremtredende er:

  • En ideell plattform å bruke hvis du trenger å håndtere ulike medietyper
  • WPF lar deg lage et brukergrensesnitt med et skinn. Det hjelper deg også når du trenger å laste inn en del av brukergrensesnittet eller ønsker å binde XML-data.
  • Den lar deg dra nytte av det store .NET-klassebiblioteket slik det er bygget på .NET-teknologi
  • Oppløsningsuavhengighet, slik at applikasjoner utviklet med WPF kan kjøre på små nettbrettskjermer eller en 20-tommers skjerm
  • WPF bygger på DirectX i stedet for WinAPI. Den bruker klientdatamaskinens grafikksystem, og tilbyr derfor større grafikkgjengivelseskraft.
  • Støtter en flytdokumentmodell som muliggjør layout med «desktop publishing»-kvalitet
  • Utseende og oppførsel er løst koblet sammen. Dette lar designere og utviklere jobbe med to separate modeller
  • I WPF-rammeverket kan du grafisk designe verktøy ved hjelp av enkle XML-dokumenter i stedet for å analysere kode.
  • Lar deg bruke maskinvareakselerasjon for å tegne GUI, for bedre ytelse

La oss deretter se på hvordan rammeverket har utviklet seg over tid.

Historien til WPF

Windows 1.0 var det første GUI-miljøet fra MicrosoftDet fungerte som et lag oppå DOS, og var avhengig av GDI- og USER-systemene for grafikk og brukergrensesnitt.

DirectX ble introdusert i 1995 som et grafikksystem med høy ytelse rettet mot spill og andre grafikkrelaterte miljøer. Gjennom årene ble det utgitt mange versjoner, og DirectX 9 ga et bibliotek som kunne brukes med administrert .NET-kode.

WPF versjon Utgivelsesår .Net-versjon Visual Studio-versjon Funksjoner
3.0 2006 3.0 N / A Første utgivelse.
Imidlertid kan WPF-utvikling gjøres med VS 2005.
3.5 2007 3.5 SV 2008 Modifikasjoner og forbedringer i:
Applikasjonsmodell, binding, kontroller, dokumenter, merknader og 3D-grensesnittelementer.
3.5 SP1 2008 3.5 SP1 N / A Native splash-skjermstøtte. Ny nettleserkontroll, støtte for DirectX pixel shader.
4.0 2010 4.0 SV 2010 Nye kontroller: Kalender, DataGrid, DatePicker. Støtte for flerberøring og manipulering.
4.5 2012 4.5 SV 2012 Raskere oppstart, forbedret ytelse ved visning av store datasett.
Ny båndkontroll og INotifyDataErrorInfo-grensesnitt for datavalidering.
4.5.1 2013 4.5.1 SV 2013 Mindre forbedringer av ytelse og pålitelighet.
4.5.2 2014 4.5.2 NA Ingen større endring
4.6 2015 4.6 SV 2015 Gjennomsiktig støtte for barnevinduer
HDPI og Touch forbedringer
4.8 2019 4.8 SV 2019 Siste store .NET Framework-utgivelse, med rettelser for høy DPI og forbedringer av tilgjengelighet.
.NET Core 3.0 og utover 2019-liggende .NET Core 3.0 til .NET 10 VS 2019/2022 WPF blir åpen kildekode og leveres med moderne .NET (applikasjoner forblir Windows-bare).

WPF versjoneres ikke lenger separat fra .NET. Siden 2019 har det blitt levert som en åpen kildekode-komponent i den moderne .NET-plattformen, og den nåværende utgivelsen er inkludert i .NET 10, som kom i november 2025 som en langsiktig støtteversjon (LTS).

Funksjoner av WPF

Diagrammet nedenfor grupperer de viktigste WPF-funksjonene, og er listet opp i detalj etter det.

Funksjoner av WPF
Funksjoner av WPF
  • Dokumenter og utskrift
  • Sikkerhet, tilgjengelighet og lokalisering
  • Tilbyr interoperabilitet med Windows Skjemakontroller
  • Direct3D brukes i grafiske applikasjoner hvor ytelse er viktig
  • Bruker skjermkortets maskinvare for gjengivelse
  • Vektorbasert grafikk lar deg skalere applikasjonen din uten tap av kvalitet
  • WPF støtter et flyttallslogisk pikselsystem og 32-bits ARGB-farge
  • Redefiner stiler og kontrollmaler
  • Bygge internasjonale fonter fra sammensatte fonter
  • WPF-tekstgjengivelse utnytter ClearType-teknologi
  • Lar deg bruke bufringsteknikken for forhåndsgjengitt tekst i videominnet
  • Ressursbasert tilnærming for hver kontroll
  • Presentasjonstidtakere initialiseres og administreres av WPF
  • Forholdet mellom video og animasjon støttes også
  • I WPF er en stil et sett med egenskaper som skal brukes på innhold som brukes til visuell gjengivelse.
  • Maler i WPF hjelper deg med å endre brukergrensesnittet til dokumentet ditt.
  • Kommandoer er mer abstract og løst koblet versjon av hendelser
  • WPF-støtte for kommandoer reduserer mengden kode vi trenger å skrive

Neste i denne WPF C# opplæring, vil vi lære om WPF-kjernetyper og infrastruktur.

WPF kjernetyper og infrastrukturer

Klasser i WPF er delt inn i fire forskjellige typer:

  • UIElement
  • FrameworkElement
  • ContentElement
  • FrameworkContentElement

Disse klassene er kjent som basiselementklasser. De danner grunnlaget for en modell for å komponere brukergrensesnitt.

WPF-brukergrensesnitt er satt sammen av elementer som er satt sammen i et trehierarki kalt elementtreet. Elementtreet er en intuitiv måte å legge ut brukergrensesnitt på, og det er strukturen du får kraftige brukergrensesnitttjenester gjennom.

XAML

Extensible Application Markup Language, som kalles «XAML» (uttales «zammel»), er en deklarativ måte å definere brukergrensesnitt på.

Her er XAML-definisjonen av en enkel knapp:

<Button
FontSize="16"
HorizontalAlignment="Center"
VerticalAlignment="Center"
>
Say Hello Guru99</Button>

Fordeler med å bruke XAML-språket:

  • XAML skiller frontend-utseende fra backend-logikk
  • XAML er den enkleste metoden for å representere brukergrensesnitt
  • XAML fungerer effektivt med designverktøy

Kontroller

WPF-rammeverket støtter mange nyttige kontroller som:

  • Redigeringskontroller som TekstBox, Kryss avBox, Radioknapp
  • Listekontroller som ListBox, Listevisning, Trevisning
  • Brukerinformasjon som Label, WPF ProgressBar, ToolTip
  • Handling som meny, knapp og verktøylinje
  • Utseende som Border, WPF Image og Viewbox
  • Vanlige dialogbokser som OpenFileDialog og PrintDialog
  • Beholdere som TabControl, ScrollBar og GroupBox
  • Oppsett som DockPanel, StackPanel og Grid
  • Navigering som Frame og Hyperlink

Utseendet til kontroller kan tilpasses med stiler og maler uten programmering. Du kan også opprette en egendefinert kontroll ved å utlede en ny klasse fra en passende basisklasse.

Utseende

WPF har en funksjon for å tilpasse utseendet til applikasjonen din. Den lar deg angi objekter og verdier for ting som fonter, bakgrunner osv.

Stilfunksjonen lar deg standardisere på et spesifikt utseende for hele produktet. Den lar deg erstatte standardutseendet mens du beholder standardoppførselen.

En datamal lar deg kontrollere standardvisualiseringen av bundne data. Ved hjelp av temaer kan du enkelt bruke de visuelle stilene til operativsystemet.

Layout og paneler

Layout hjelper deg med riktig plassering og størrelse på kontrollene. Det er en del av prosessen med å komponere presentasjonen for brukeren. WPF-rammeverket forenkler layoutprosessen og gir bedre tilpasningsevne til brukergrensesnittets utseende.

Layoutinfrastrukturen tilbys av fem hovedklasser: 1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid og 5) Canvas

grafikk

WPF tilbyr et forbedret grafikksystem:

  • WPF bruker enhetsuavhengige enheter, noe som muliggjør oppløsning og enhetsuavhengighet. Hver enhetsuavhengig piksel skaleres automatisk med systemets punkter per tomme-innstilling.
  • WPF bruker dobbel i stedet for float og støtter et bredere utvalg av farger
  • WPF-grafikkmotoren er utformet på en slik måte at den kan dra nytte av grafikkmaskinvare når den er tilgjengelig

Dokumenter og utskrift

WPF-rammeverket tilbyr tre typer dokumenter:

  • Faste dokumenter: Denne typen dokument støtter WYSIWYG presentasjon.
  • Flytdokumenter: Lar deg justere og flyte om innhold basert på kjøretidsvariabler som vindusstørrelse og enhetsoppløsning.
  • XPS-dokumenter: En paginert representasjon av elektronisk papir i et XML-basert format. XPS er et åpent, standardisert dokumentformat.

WPF gir bedre kontroll over utskriftssystemet, inkludert fjernutskrift og køer. Dessuten kan XPS-dokumenter skrives ut direkte uten å konvertere dem til et utskriftsformat.

Når vi har dekket byggeklossene, la oss se hvordan disse delene passer sammen innvendig.

WPF Architecture

WPF er en del av .NET-rammeverket. Det inneholder både administrert og uadministrert kode. De viktigste komponentene i WPF-arkitekturen er forklart i figuren nedenfor:

WPF Architecture

WPF Architecture

Komponenter av WPF-arkitektur

  • PresentationFrameworkHjelper deg med å lage elementer på toppnivå som kontroller, stiler, layout, vinduer osv.
  • PresentationCoreDen inneholder basistyper som UIElement og Visual, som alle kontroller og former i PresentationFramework.dll er avledet fra.
  • CLR: Det gjør utviklingsprosessen produktiv ved å tilby funksjoner som Minnehåndtering, feilhåndtering osv.
  • Milcore: Milcore er en del av den uadministrerte koden som tilbyr tett integrasjon med DirectX.
  • DirectX: Det er lavnivå-API-et som gjengir grafikken til WPF. DirectX samhandler med drivere og gjengir innholdet.
  • Bruker 32: Det er et kjerne-API som er mye brukt av mange programmer. Det administrerer minne- og prosesseparasjon. User32 hjelper deg med å bestemme hvilket element som skal plasseres hvor på skjermen.
  • kernel: Inndata kommer som et signal på en kjernemodus-enhetsdriver og blir rutet til riktig prosess ved å koble til Windows kjerne og User32.

WPF-databinding

Databinding er et av de kraftigste konseptene i WPF. I stedet for å skrive kode som manuelt kopierer verdier mellom kontroller og objekter, deklarerer du en forbindelse i XAML, og WPF holder begge sider synkronisert automatisk. For eksempel:

<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />

WPF støtter fire bindingsmoduser:

  • Enveiskjøring: Kontrollen oppdateres når kildedataene endres
  • Toveis: Endringer flyter i begge retninger mellom kontroll og kilde
  • Engangs: Kontrollen leser kildeverdien bare én gang, ved lastetid
  • EnveisTilKilde: Kontrollen skyver verdien sin til kilden, aldri omvendt

Databinding er også motoren bak MVVM-mønsteret (Model-View-ViewModel), den vanligste arkitekturen for profesjonelle WPF-applikasjoner, fordi den lar visningen forbli i XAML mens logikken lever i testbare C#-klasser.

💡 Tips: Implementer INotifyPropertyChanged-grensesnittet på dataklassene dine. Uten det vil ikke brukergrensesnittet oppdateres når egenskapsverdier endres i koden.

WPF installasjon

Se denne lenken for å installere WPF: https://www.guru99.com/download-install-visual-studio.html

I denne veiledningen for WPF-applikasjoner skal vi bygge vår første WPF-applikasjon.

Hvordan lage din første WPF-applikasjon?

I dette WPF-eksemplet skal vi utvikle en grunnleggende WPF-applikasjon. La oss starte den enkle implementeringen ved å følge trinnene gitt i WPF-applikasjonseksemplet nedenfor.

Trinn 1) I Visual Studio går du til Fil > Ny > Prosjekt

Visual Studio Fil-meny som viser alternativet Nytt prosjekt

Trinn 2) I det nye prosjektvinduet

  1. Velg WPF App
  2. Skriv inn navn som "MyWPF"
  3. klikk OK

Nytt prosjektvindu med WPF-appmal valgt

Trinn 3) Visual Studio lager to filer som standard

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

Løsningsutforsker som viser MainWindow.xaml- og MainWindow.xaml.cs-filene

MainWindow.xaml har

  1. Et designvindu
  2. XAML fil

MainWindow.xaml-designvindu og XAML-editor i Visual Studio

I XAML-vinduet skrives følgende tagger som standard:

Standard XAML-koder generert for et nytt WPF-vindu

Grid er det første elementet som standard.

MainWindow.xaml.cs inneholder den tilsvarende bakliggende koden for XAML-designfilen:

MainWindow.xaml.cs-kodebakgrunnsfil for WPF-vinduet

Trinn 4) I verktøykassen,

  1. Dra tekstenBox element til designvinduet
  2. En tekstBox vil vises i designvinduet
  3. Du vil se XAML-kode for tekstenBox la til

Dra en tekstBox fra verktøykassen til WPF-designvinduet

Trinn 5) Endre teksten til «Første WPF-program».

Redigere tekstBox tekstegenskap til First WPF Program

Trinn 6) Klikk på Start-knappen

Visual Studio Start-knappen for å kjøre WPF-applikasjonen

Trinn 7) Du vil se et vindu i utdataene

Kjørende WPF-programvindu som viser teksten Første WPF-program

Gratulerer! Du har designet og laget din første WPF-applikasjon. Neste i denne WPF for nybegynneropplæringen vil vi se forskjellen mellom WPF og WinForms.

WPF vs. WinForms

WPF WinForms
Det er et nyere rammeverk, så det er mer i tråd med gjeldende standarder. Den er eldre, så den er mer utprøvd.
Den er fleksibel og funksjonsrik. Du kan designe svært omfattende applikasjoner uten å kode eller kjøpe kontroller. Ikke så funksjonsrik
Utviklere av 3rd Partykontroller er fokusert på kompatibilitet med WPF ettersom det er fremtiden. Det er mange tredjepartskontroller du kan kjøpe eller få gratis.
XAML lar deg enkelt opprette og redigere et grafisk brukergrensesnitt. Det gjør at arbeidet kan deles mellom en designer (XAML) og en programmerer (C#, VB.NET, osv.). In Windows Skjemaer, all koden er skrevet på ett sted.
XAML-ferdigheter overføres direkte til nyere rammeverk som WinUI 3, .NET MAUI og Avalonia UI. WinForms-ferdigheter gjelder hovedsakelig for klassiske Windows skrivebordsutvikling.
WPFs kontrollpakke i boksen er begrenset Kontrollene i boksen er veldig kraftige

Type applikasjoner bygget med WPF

  • WPF brukes for frittstående Windows skrivebordsapplikasjoner som verktøy for forretningsområder i bedrifter, dashbord, handelsterminaler og designprogramvare
  • Windows Skjemaer og WPF-sider kan eksistere side om side i samme applikasjon
  • Du kan utvikle applikasjoner i side-/vindusnavigasjonsstil

WPF i Modern .NET

Microsoft WPF med åpen kildekode i desember 2018, og siden .NET Core 3.0 (2019) har rammeverket blitt levert med alle moderne .NET-utgivelser, opp til og med .NET 10. Å flytte en applikasjon til moderne .NET gir raskere oppstart, enklere distribusjon gjennom selvstendig publisering og tilgang til nåværende C#-språkfunksjoner, mens WPF-programmeringsmodellen forblir den samme.

WPF forblir Windows-bare. Hvis du velger et skrivebordsrammeverk i dag, hjelper denne sammenligningen:

Rammeverk Best For
WPF Moden, funksjonsrik Windows skrivebordsapplikasjoner med et enormt økosystem
WindowsUI 3 Nye applikasjoner rettet mot det moderne Windows 11 utseende og følelse
.NET FIKSET Plattformtverrapplikasjoner som spenner over Windows, macOS, Android, og iOS

Fordi WPF aktivt vedlikeholdes og er dypt integrert i bedriftsprogramvare, er det fortsatt en praktisk investering å lære seg det. Når du er komfortabel med å bygge disse applikasjonene, er det verdt å øve på de vanligste WPF-intervjuspørsmål å låse inne konsepter som XAML, databinding og det visuelle treet.

Spørsmål og svar

Du trenger XAML for å designe grensesnittet og C# (eller VB.NET) for applikasjonslogikken. Grunnleggende kunnskap om objektorientert programmering og .NET-klassebiblioteket gjør det mye enklere å lære WPF.

Nei. WPF er avhengig av DirectX og Windows API-er, slik at den bare kjører på WindowsFor XAML-utvikling på tvers av plattformer, vurder Avalonia brukergrensesnitt or .NET FIKSET.

Ja. Verktøy som GitHub Copilot kan generere XAML-layouter, bindingsuttrykk og stiler fra kommentarer, noe som fremskynder læringen og reduserer repeterende markup for nybegynnere.

Du kan integrere ML.NET for lokal maskinlæring eller ring skybaserte AI-tjenester som Azure OpenAI fra C#-koden din, og vis deretter resultatene via standard WPF-databinding.

Ja. WPF er åpen kildekode under MIT-lisensen, og du kan bygge applikasjoner gratis med Visual Studio Community Edition.

Oppsummer dette innlegget med: