WPF-handledning för nybörjare

⚡ Smart sammanfattning

WPF (Windows Presentation Foundation) är Microsofts ramverk för att bygga rika Windows skrivbordsapplikationer. Nybörjare lär sig hur XAML, databindning och hårdvaruaccelererad grafik kombineras för att skapa skalbara, visuellt rika användargränssnitt med mindre kod.

  • 🧭 Foundation: WPF är ett vektorbaserat, DirectX-drivet UI-ramverk inuti .NET-plattformen.
  • 🎨 XAML-kodning: Deklarativ XML-syntax separerar gränssnittsdesign från C# affärslogik.
  • 🧱 Architecture: PresentationFramework, PresentationCore och Milcore samarbetar ovanför DirectX för rendering.
  • 🔗 Databindning: Inbyggd bindning ansluter kontroller till datakällor och driver MVVM-mönstret.
  • 🛠️ Praktisk start: Med Visual Studio-mallar kan du bygga och köra din första WPF-app i sju steg.
  • 🚀 Modern relevans: WPF är öppen källkod och levereras med .NET 10 under långsiktig support.

WPF-handledning för nybörjare

Vad är WPF?

WPF är ett ramverk för att bygga Windows applikationer som låter utvecklare skapa rika användargränssnitt med 3D-animationer och rika färger med mindre kodkomplexitet. Det är en vektorbaserad renderingsmotor som använder hårdvaruaccelerationen hos moderna grafikkort, vilket gör användargränssnittet snabbare och mycket skalbart. WPF står för Windows Presentation Foundation.

WPF kan betraktas som en utveckling av WinForms. Det tillhandahåller ett lättanvänt grafiskt visningssystem för Windows och erbjuder en tydlig separation mellan användargränssnitt och affärslogik.

WPF-applikationer distribueras vanligtvis som fristående skrivbordsprogram, och de kan också vara värd för som inbäddade objekt i andra applikationer.

Varför WPF?

Det finns många anledningar att använda WPF-plattformen. Några framträdande är:

  • En idealisk plattform att använda om du behöver hantera olika mediatyper
  • Med WPF kan du skapa ett skalat användargränssnitt. Det hjälper dig också när du behöver ladda en del av användargränssnittet eller vill binda XML-data.
  • Det låter dig dra nytta av det stora .NET-klassbiblioteket som det är byggt på .NET-teknik
  • Oberoende av upplösning, så applikationer som utvecklats med WPF kan köras på små surfplattor eller en 20-tums skärm
  • WPF bygger på DirectX istället för WinAPI. Den använder klientdatorns grafiksystem och erbjuder därför större grafikåtergivningskraft.
  • Stöder en flödesdokumentmodell som möjliggör layout med "desktop publishing"-kvalitet
  • Utseende och beteende är löst kopplade. Detta gör det möjligt för designers och utvecklare att arbeta med två separata modeller.
  • I WPF-ramverket kan du grafiskt designa verktyg med hjälp av enkla XML-dokument istället för att analysera kod.
  • Låter dig använda hårdvaruacceleration för att rita GUI, för bättre prestanda

Låt oss nu se hur ramverket utvecklats över tid.

Historia om WPF

Windows 1.0 var den första GUI-miljön från MicrosoftDet fungerade som ett lager ovanpå DOS och förlitade sig på GDI- och USER-systemen för grafik och användargränssnitt.

DirectX introducerades 1995 som ett högpresterande grafiksystem riktat mot spel och andra grafikrelaterade miljöer. Under årens lopp släpptes många versioner, och DirectX 9 tillhandahöll ett bibliotek som kunde användas med hanterad .NET-kod.

WPF version Release Year .Net-version Visual Studio-version Funktioner
3.0 2006 3.0 - Initial Release.
WPF-utveckling kan dock göras med VS 2005.
3.5 2007 3.5 US 2008 Ändringar och förbättringar i:
Applikationsmodell, bindning, kontroller, dokument, anteckningar och 3D-gränssnittselement.
3.5 SP1 2008 3.5 SP1 - Stöd för inbyggt stänkskärm. Ny webbläsarkontroll, stöd för DirectX pixel shader.
4.0 2010 4.0 US 2010 Nya kontroller: Kalender, DataGrid, DatePicker. Stöd för multitouch och manipulation.
4.5 2012 4.5 US 2012 Snabbare uppstart, förbättrad prestanda vid visning av stora datamängder.
Ny menyflikskontroll och INotifyDataErrorInfo-gränssnitt för datavalidering.
4.5.1 2013 4.5.1 US 2013 Mindre förbättringar av prestanda och tillförlitlighet.
4.5.2 2014 4.5.2 NA Ingen större förändring
4.6 2015 4.6 US 2015 Transparent stöd för barnfönster
HDPI och Touch förbättringar
4.8 2019 4.8 US 2019 Sista större .NET Framework-utgåvan, med korrigeringar för hög DPI och förbättringar av tillgänglighet.
.NET Core 3.0 och senare 2019-present .NET Core 3.0 till .NET 10 VS 2019/2022 WPF blir öppen källkod och levereras med moderna .NET (applikationer finns kvar Windows-endast).

WPF versioneras inte längre separat från .NET. Sedan 2019 har det levererats som en öppen källkodskomponent i den moderna .NET-plattformen, och den nuvarande versionen ingår i .NET 10, som kom i november 2025 som en långsiktig supportversion (LTS).

Funktioner hos WPF

Diagrammet nedan grupperar de viktigaste WPF-funktionerna, listade i detalj efter det.

Funktioner hos WPF
Funktioner hos WPF
  • Dokument och utskrift
  • Säkerhet, tillgänglighet och lokalisering
  • Erbjuder interoperabilitet med Windows Formar kontroller
  • Direct3D används i grafiska applikationer där prestanda är viktigt
  • Använder grafikkortets hårdvara för rendering
  • Vektorbaserad grafik låter dig skala din applikation utan kvalitetsförlust
  • WPF stöder ett flyttalslogiskt pixelsystem och 32-bitars ARGB-färg
  • Omdefiniera stilar och kontrollmallar
  • Bygga internationella typsnitt från sammansatta typsnitt
  • WPF-textrendering utnyttjar ClearType-teknik
  • Låter dig använda cachetekniken för förrenderad text i videominnet
  • Resursbaserat tillvägagångssätt för varje kontroll
  • Presentationstimer initieras och hanteras av WPF
  • Relationen mellan video och animation stöds också
  • I WPF är en stil en uppsättning egenskaper som ska tillämpas på innehåll som används för visuell rendering.
  • Mallar i WPF hjälper dig att ändra användargränssnittet i ditt dokument
  • Kommandon är mer abstract och löst kopplade versioner av händelserna
  • WPF-stöd för kommandon minskar mängden kod vi behöver skriva

Nästa i denna WPF C# handledning, kommer vi att lära oss om WPF-kärntyper och infrastruktur.

WPF kärntyper och infrastrukturer

Klasser i WPF är indelade i fyra olika typer:

  • UIElement
  • FrameworkElement
  • ContentElement
  • FrameworkContentElement

Dessa klasser kallas baselementklasser. De utgör grunden för en modell för att skapa användargränssnitt.

WPF-användargränssnitt består av element som är sammansatta i en trädhierarki som kallas elementträd. Elementträdet är ett intuitivt sätt att utforma användargränssnitt, och det är den struktur genom vilken du får kraftfulla UI-tjänster.

XAML

Extensible Application Markup Language, som kallas "XAML" (uttalas "zammel"), är ett deklarativt sätt att definiera användargränssnitt.

Här är XAML-definitionen av en enkel knapp:

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

Fördelar med att använda XAML-språket:

  • XAML separerar frontend-utseende från backend-logik
  • XAML är den enklaste metoden att representera användargränssnitt
  • XAML fungerar effektivt med designverktyg

Fjärrkontroll

WPF-ramverket stöder många användbara kontroller som:

  • Redigeringskontroller som textBox, Kolla uppBox, Radio knapp
  • Listkontroller som ListaBox, ListView, TreeView
  • Användarinformation som Label, WPF ProgressBar, ToolTip
  • Åtgärder som meny, knapp och verktygsfält
  • Utseende som Border, WPF Image och Viewbox
  • Vanliga dialogrutor som OpenFileDialog och PrintDialog
  • Behållare som TabControl, ScrollBar och GroupBox
  • Layouter som DockPanel, StackPanel och Grid
  • Navigering som ram och hyperlänk

Utseendet på kontroller kan anpassas med stilar och mallar utan programmering. Du kan också skapa en anpassad kontroll genom att härleda en ny klass från en lämplig basklass.

Utseende

WPF tillhandahåller en funktion för att anpassa utseendet på din applikation. Det låter dig ställa in objekt och värden för saker som typsnitt, bakgrunder etc.

Styles-funktionen låter dig standardisera på ett specifikt utseende för hela produkten. Det låter dig ersätta standardutseendet samtidigt som det behåller dess standardbeteende.

En datamall låter dig styra standardvisualiseringen av bunden data. Med hjälp av teman kan du enkelt tillämpa operativsystemets visuella stilar.

Layout & Paneler

Layout hjälper dig att placera och storleksanpassa kontroller korrekt. Det är en del av processen att skapa presentationen för användaren. WPF-ramverket förenklar layoutprocessen och erbjuder bättre anpassningsmöjligheter för användargränssnittets utseende.

Layoutinfrastrukturen erbjuds av fem huvudklasser: 1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid och 5) Canvas

Grafiken

WPF tillhandahåller ett förbättrat grafiksystem:

  • WPF använder enhetsoberoende enheter, vilket möjliggör upplösning och enhetsoberoende. Varje enhetsoberoende pixel skalas automatiskt med systemets inställning för punkter per tum.
  • WPF använder dubbel istället för float och stöder ett bredare spektrum av färger
  • WPF-grafikmotorn är designad på ett sådant sätt att den kan dra nytta av grafikhårdvara när den är tillgänglig

Dokument och utskrift

WPF-ramverket erbjuder tre typer av dokument:

  • Fasta dokument: Denna typ av dokument stöder WYSIWYG presentation.
  • Flödesdokument: Låter dig justera och ändra innehåll baserat på körtidsvariabler som fönsterstorlek och enhetsupplösning.
  • XPS-dokument: En paginerad representation av elektroniskt papper i ett XML-baserat format. XPS är ett öppet, standardiserat dokumentformat.

WPF möjliggör bättre kontroll över utskriftssystemet, inklusive fjärrutskrift och köer. Dessutom kan XPS-dokument skrivas ut direkt utan att konvertera dem till utskriftsformat.

När vi nu har täckt alla byggstenar, låt oss se hur dessa delar passar ihop internt.

WPF Architecture

WPF är en del av .NET-ramverket. Det innehåller både hanterad och ohanterad kod. De viktiga komponenterna i WPF-arkitekturen förklaras i figuren nedan:

WPF Architecture

WPF Architecture

Komponenter i WPF-arkitektur

  • PresentationFrameworkHjälper dig att skapa element på övergripande nivå som kontroller, stilar, layout, fönster etc.
  • PresentationCoreDen innehåller bastyper som UIElement och Visual, från vilka alla kontroller och former i PresentationFramework.dll härleds.
  • CLR: Det gör utvecklingsprocessen produktiv genom att erbjuda funktioner som minneshantering, felhantering osv.
  • Milcore: Milcore är en del av den ohanterade koden som erbjuder tät integration med DirectX.
  • DirectX: Det är lågnivå-API:et som renderar grafiken i WPF. DirectX interagerar med drivrutiner och renderar innehållet.
  • Användare32: Det är ett kärn-API som används flitigt av många program. Det hanterar minnes- och processseparation. User32 hjälper dig att bestämma vilket element som ska placeras var på skärmen.
  • Kernel: Inmatningen kommer från en signal på en kärnlägesdrivrutin och dirigeras till rätt process genom att ansluta till Windows kärna och User32.

WPF-databindning

Databindning är ett av de mest kraftfulla koncepten i WPF. Istället för att skriva kod som manuellt kopierar värden mellan kontroller och objekt, deklarerar du en koppling i XAML, och WPF håller båda sidor synkroniserade automatiskt. Till exempel:

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

WPF stöder fyra bindningslägen:

  • Envägs: Kontrollen uppdateras när källdata ändras
  • Tvåvägs: Förändringar flödar i båda riktningarna mellan kontroll och källa
  • Engångs: Kontrollen läser källvärdet endast en gång, vid laddningstillfället
  • Envägskälla: Kontrollen flyttar sitt värde till källan, aldrig tvärtom

Databindning är också motorn bakom MVVM-mönstret (Model-View-ViewModel), den vanligaste arkitekturen för professionella WPF-applikationer, eftersom det låter vyn stanna kvar i XAML medan logiken finns i testbara C#-klasser.

💡 Tips: Implementera INotifyPropertyChanged-gränssnittet på dina dataklasser. Utan det uppdateras inte användargränssnittet när egenskapsvärden ändras i koden.

WPF installation

Se den här länken för att installera WPF: https://www.guru99.com/download-install-visual-studio.html

I den här handledningen för WPF-applikationer ska vi bygga vår första WPF-applikation.

Hur skapar jag din första WPF-applikation?

I det här WPF-exemplet kommer vi att utveckla en grundläggande WPF-applikation. Så låt oss börja den enkla implementeringen genom att följa stegen som anges i WPF-applikationsexemplet nedan.

Steg 1) I Visual Studio, gå till Arkiv > Nytt > Projekt

Visual Studio Fil-meny som visar alternativet Nytt projekt

Steg 2) I det nya projektfönstret

  1. Välj WPF App
  2. Ange namn som "MyWPF"
  3. klicka på OK

Nytt projektfönster med WPF-appmallen vald

Steg 3) Visual Studio skapar två filer som standard

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

Lösningsutforskaren som visar filerna MainWindow.xaml och MainWindow.xaml.cs

MainWindow.xaml har

  1. Ett designfönster
  2. XAML-fil

Designfönstret MainWindow.xaml och XAML-editorn i Visual Studio

I XAML-fönstret skrivs följande taggar som standard:

Standard XAML-taggar genererade för ett nytt WPF-fönster

Grid är det första elementet som standard.

MainWindow.xaml.cs innehåller motsvarande kod bakom XAML-designfilen:

MainWindow.xaml.cs kodfil för WPF-fönstret

Steg 4) I verktygslådan,

  1. Dra textenBox element till designfönstret
  2. En textBox visas i designfönstret
  3. Du kommer att se XAML-kod för textenBox lagt till

Dra en textBox från verktygslådan till WPF-designfönstret

Steg 5) Ändra texten till ”Första WPF-programmet”.

Redigera textBox textegenskap till First WPF Program

Steg 6) Klicka på Start-knappen

Visual Studio Start-knappen för att köra WPF-applikationen

Steg 7) Du kommer att se ett fönster i utdata

Körande WPF-programfönster som visar texten Första WPF-programmet

Grattis! Du har designat och skapat din första WPF-applikation. Nästa i denna handledning för WPF för nybörjare kommer vi att se skillnaden mellan WPF och WinForms.

WPF vs. WinForms

WPF WinForms
Det är ett nyare ramverk, så det är mer i samklang med nuvarande standarder. Den är äldre, så den är mer beprövad.
Den är flexibel och funktionsrik. Du kan designa mycket avancerade applikationer utan att behöva koda eller köpa kontroller. Inte så funktionsrik
Utvecklare av 3rd Partykontrollerna är fokuserade på kompatibilitet med WPF eftersom det är framtiden. Det finns många kontroller från tredje part som du kan köpa eller få gratis.
Med XAML kan du enkelt skapa och redigera ditt grafiska gränssnitt. Det gör att arbetet kan delas upp mellan en designer (XAML) och en programmerare (C#, VB.NET, etc.). In Windows Formulär, all kod är skriven på ett ställe.
XAML-färdigheter överförs direkt till nyare ramverk som WinUI 3, .NET MAUI och Avalonia UI. WinForms-färdigheter gäller huvudsakligen för klassiska Windows skrivbordsutveckling.
WPF:s inbox-kontrollsvit är begränsad In-box kontroller är mycket kraftfulla

Typ av applikationer byggda med WPF

  • WPF används för fristående Windows skrivbordsapplikationer såsom verktyg för affärsområden, dashboards, handelsterminaler och designprogramvara
  • Windows Formulär och WPF-sidor kan samexistera i samma applikation
  • Du kan utveckla applikationer i sid-/fönsternavigeringsstil

WPF i Modern .NET

Microsoft WPF med öppen källkod i december 2018, och sedan .NET Core 3.0 (2019) har ramverket levererats med varje modern .NET-utgåva, upp till och inklusive .NET 10. Att flytta en applikation till moderna .NET ger snabbare start, enklare distribution genom fristående publicering och tillgång till aktuella C#-språkfunktioner, medan WPF-programmeringsmodellen förblir densamma.

WPF kvarstår Windows-endast. Om du väljer ett skrivbordsramverk idag, hjälper den här jämförelsen:

Ramverk bäst för
WPF Mogen, funktionsrik Windows skrivbordsapplikationer med ett enormt ekosystem
WindowsUI 3 Nya applikationer riktade mot moderna Windows 11 utseende och känsla
.NET FIXAT Plattformsoberoende applikationer som spänner över Windows, macOS, Android, och iOS

Eftersom WPF aktivt underhålls och är djupt inbäddat i företagsprogramvara är det fortfarande en praktisk investering att lära sig det. När du väl är bekväm med att bygga dessa applikationer är det värt att öva på de vanligaste WPF-intervjufrågor att låsa in koncept som XAML, databindning och det visuella trädet.

Vanliga frågor

Du behöver XAML för att designa gränssnittet och C# (eller VB.NET) för applikationslogiken. Grundläggande kunskaper i objektorienterad programmering och .NET-klassbiblioteket gör det mycket enklare att lära sig WPF.

Nej. WPF är beroende av DirectX och Windows API:er, så det körs bara på WindowsFör plattformsoberoende XAML-utveckling, överväg Avalonia UI or .NET FIXAT.

Ja. Verktyg som GitHub Copilot kan generera XAML-layouter, bindningsuttryck och stilar från kommentarer, vilket påskyndar inlärningen och minskar repetitiv markup för nybörjare.

Du kan integrera ML.NET för lokal maskininlärning eller ring molnbaserade AI-tjänster som Azure OpenAI från din C#-kod och visa sedan resultaten via standard WPF-databindning.

Ja. WPF är öppen källkod under MIT-licensen, och du kan bygga applikationer kostnadsfritt med Visual Studio Community Edition.

Sammanfatta detta inlägg med: