Hva er WPF (Windows Presentation Foundation): En komplett guide til arkitektur, XAML, kontroller, layout, data, grafikk og tilpasning

Siste oppdatering: 14/08/2025
Forfatter: Isaac
  • WPF er .NET UI-rammeverket for WindowsVektor, GPU-akselerert og XAML-basert.
  • To implementeringer: .NET (åpen kildekode) og .NET Framework 4; begge er kun for Windows.
  • Innbinding, kommandoer, stiler og maler muliggjør rike, vedlikeholdbare, MVVM-orienterte brukergrensesnitt.
  • 2D/3D-grafikk, animasjoner, typografi, multimedia og Win32/WinForms-interoperabilitet.

WPF Windows Presentation Foundation

Windows Presentation Foundation (WPF) er .NET-brukergrensesnittrammeverket for å bygge moderne, skalerbare, maskinvareakselererte Windows-skrivebordsapplikasjoner . Det ble designet for å dra nytte av Direct3D og nåværende GPU-er, og tilbyr en vektorbasert renderingmotor, responsiv design, animasjoner og et klart skille mellom grensesnitt og logikk takket være XAML og den underliggende koden.

I tillegg til den visuelle kraften integrerer WPF en robust datamodell, stiler og maler, kommandoer, avansert tekststøtte og kompatibilitet med multimedia, 2D/3D og typografi av høy kvalitet. Alt dette kompletteres av velutviklede verktøy i Visual Studio og Blend, et økosystem av tredjepartskontroller og muligheten til å samhandle med eksisterende teknologier som Windows Forms og Win32.

Hva er WPF og implementeringene av det

WPF er et oppløsningsuavhengig presentasjonsrammeverk som gjengir grensesnittet sitt ved hjelp av en vektorgrafikkpipeline og er en integrert del av .NET. Denne enhetsuavhengige tilnærmingen muliggjør skarpe, skalerbare grensesnitt på tvers av forskjellige DPI-innstillinger , noe som forenkler tilgjengelighet og visuell kvalitet på alle skjermer.

Det finnes to hovedimplementeringer: .NET-versjonen (åpen kildekode og driftet på GitHub) og .NET Framework 4-versjonen som følger med Windows. .NET-utgaven kjører utelukkende på Windows , selv om .NET er plattformuavhengig, og XAML-designeren krever minst Visual Studio 2019 16.8 (eller senere versjoner avhengig av .NET-versjonen). .NET Framework 4-baserte utgave støttes av Visual Studio 2017 og 2019 og distribueres som en komponent i selve operativsystemet.

Migrering av applikasjoner fra .NET Framework til .NET gir klare fordeler: forbedret ytelse, nye API-er, de nyeste språkforbedringene, større tilgjengelighet og pålitelighet og oppdaterte verktøy. Hvis du vedlikeholder en eksisterende .NET Framework-applikasjonsbase, lønner oppgraderingen seg når det gjelder produktivitet og vedlikehold på mellomlang sikt, spesielt i forretningsområdescenarioer (LOB).

Historisk sett har WPF vært inkludert siden Windows Vista og var også tilgjengelig for Windows XP SP2 og Windows Server 2003, og etablerte seg som referanse-UI-laget for stasjonære datamaskiner i .NET-økosystemet. På teknologifamilienivå var Silverlight en delmengde av WPF rettet mot rike web- og mobilapplikasjoner, og arvet XAML-modellen, men uten 3D-støtte og med et redusert omfang sammenlignet med WPF.

WPFs gjengivelse er basert på Direct3D, noe som muliggjør kompleks grafikk, konsistente temaer og avlastning av arbeid til GPU-en for å redusere CPU-belastningen. Denne vektleggingen av vektorer forhindrer pikselering ved skalering og legger til rette for jevne opplevelser når maskinvaren tillater det.

igpu GPU
Relatert artikkel:
Slik sjekker du om du bruker et dedikert grafikkort i Windows 11

Illustrasjon av WPF-grensesnitt

XAML, kode bak og programmeringsmodell

I WPF uttrykkes grensesnittet ved hjelp av XAML (et XML-basert markupspråk), og virkemåten implementeres med administrert kode (C# eller VB.NET) i kodebakgrunnsklasser. Denne ansvarsdelingen reduserer utviklings- og vedlikeholdskostnader og lar designere og utviklere jobbe parallelt uten overlapping.

  Slik installerer du APK-er på Android TV trygt og effektivt

Programmeringsmodellen ligger i navnerommet System.Windows og er avhengig av kjente konsepter (klasseinstansiering, egenskaper, metoder og hendelser) og to unike søyler: avhengighetsegenskaper og rutede hendelser. Avhengighetsegenskaper muliggjør databinding, stiler, animasjoner og verdiarv; rutede hendelser kan bevege seg gjennom det visuelle treet, noe som forenkler håndteringen av komplekse interaksjoner.

Elementtreet som genereres av XAML definerer et tydelig hierarki av komponenter, og under kjøring konverterer rammeverket elementer og attributter til forekomster av faktiske WPF-klasser. For eksempel materialiseres et Window-element med et Title-attributt som en forekomst av Window-klassen med dens Title-egenskapssett.

brukergrensesnitt feil
Relatert artikkel:
Fiks UI-feil i COD Cold War

Koblingen mellom XAML og den underliggende koden deklareres med `x:Class`, og metoden `InitializeComponent`, som genereres ved kompileringstid, binder brukergrensesnittet til klassen og registrerer hendelseshåndterere. Når en kontroll deklarerer en håndterer i XAML, kobler systemet hendelsen (for eksempel et knappeklikk) til den tilsvarende metoden i den delvise klassen.

WPF støtter også arkitekturmønstre som MVVM takket være databindingssystemet, kommandoene og DataContext. Dette oppmuntrer til enhetstesting, gjenbruk av visninger og et strengt skille mellom visnings- og presentasjonslogikk.

XAML og WPF-kodebakgrunn

Inndata, kommandoer, kontroller og layout

WPFs inputsystem kombinerer direkte og rutede hendelser for tekst, fokus og peker , og legger til et kommandosystem som frikobler handlingen fra brukerens bevegelse. Dermed kan den samme kommandoen (Kopier, Klipp ut, Lim inn) kalles fra hurtigtaster , menyer eller knapper uten å duplisere logikk.

I WPF er en kontroll ethvert UI-element som ligger i et vindu eller en side med definert oppførsel; rammeverket inkluderer et bredt spekter av bruksklare kontroller. Dette fremskynder opprettelsen av omfattende applikasjoner uten behov for å bygge komponenter fra bunnen av.

Etter funksjon dekker de innebygde kontrollene kategorier som knapper, datavisning, navigasjon, menyer, valg, input og mer. Nedenfor finner du eksempler på klasser i hver gruppe:

  • Knapper: Knapp, Gjenta-knapp.
  • Datavisualisering: DataGrid, listevisning, trevisning.
  • Datoer: Kalender, datovelger.
  • Dialogbokser: ÅpneFilDialog, LagreFilDialog, SkrivUtskriftsdialog.
  • Digitalt blekk: InkCanvas, InkPresenter.
  • dokumenter: Dokumentvisning, FlowDocumentReader, FlowDocumentScrollViewer, FlowDocumentPageViewer, StickyNoteControl.
  • Tekstinput: Tekstboks, RichTextBox, Passordboks.
  • Design: Kantlinje, lerret, DockPanel, rutenett, GridSplitter, rutenettvisning, panel, StackPanel, WrapPanel, ScrollViewer, rullefelt, visningsboks, VirtualizingStackPanel, vindu, tommeltegn, gruppeboks, utvider, skilletegn, ResizeGrip, BulletDecorator.
  • Media: Bilde, MediaElement, SoundPlayerAction.
  • Menyer og barer: Meny, ContextMenu, ToolBar, StatusBar, ProgressBar.
  • Navigasjon: Ramme, side, navigasjonsvindu, hyperkobling, tabulatorkontroll.
  • Utvalg: Avmerkingsboks, radioknapp, kombinasjonsboks, listeboks, glidebryter.
  • Brukerinformasjon: Etikett, tekstblokk, verktøytips, popup, tilgangstekst.
  Slik endrer du GPU-prioritet for apper i Windows

Layoutsystemet er grunnleggende: det fordeler kontroller etter størrelse og plassering på en relativ måte, og forhandler mellomrom mellom primære og sekundære kontroller for å tilpasse seg endringer i vindus- og skjermstørrelser. Dette unngår oppløsningsspesifikk logikk og gir et responsivt brukergrensesnitt.

Layoutpanelene dekker de vanligste mønstrene: Canvas (absolutt posisjonering), DockPanel (dokking til kanter), Grid (rader og kolonner), StackPanel (horisontal eller vertikal stabling), VirtualizingStackPanel (virtualisert stabling) og WrapPanel (linjeskift). For eksempel lar DockPanel deg dokke kontroller til kanter, mens de resterende kontrollene enkelt fyller den tilgjengelige plassen.

Kontroller og layout i WPF

Kobling av data, maler og ressurser

Databinding forenkler synkronisering mellom objekter og brukergrensesnitt, eliminerer behovet for å kopiere verdier manuelt og forenkler spredningen av endringer. Binding-klassen kobler sammen kilde og destinasjon, mens DataContext lar kontroller slå opp egenskaper uten eksplisitt kobling.

Lenker deklareres ved hjelp av uttrykk i XAML, og WPF tilbyr validering, sortering, filtrering og gruppering på samlinger. Den støtter også datamaler for å definere visningen av hvert element. Takket være denne arkitekturen kan komplekse lister vises med tilpassede presentasjoner uten at det påvirker ytelsen.

WPF støtter forskjellige bindingsmodi: enkelt, endireksjonal (lesing) og toveis (lesing og skriving). I forretningsapplikasjoner er det vanlig praksis å kombinere disse modusene i lister og skjemaer for å forenkle redigering og visning.

I tillegg til .NET-objekter og -samlinger kan LINQ-spørringer (inkludert LINQ til XML) enkelt brukes som datakilder. Motoren håndhever ikke presentasjonen; dette bestemmes av datamalene, som kan tilpasses for hver type bundet objekt.

Stiler lar deg standardisere utseendet: en stil tilordner egenskaper til en bestemt type eller forekomst, og sentraliserer farger, fonter og marger for hele applikasjonen. Ressurssystemet gjør det enkelt å dele disse stilene og penslene mellom kontroller og vinduer.

Innholdsmodellen definerer hva en kontroll med Content kan inneholde: enkle kontroller som TextBox eller komplekse kontroller som inneholder elementtrær, for eksempel knapper med interne oppsett eller bilder. Denne fleksibiliteten gjør det enkelt å bygge komplekse grensesnitt uten å opprette nye kontroller fra bunnen av.

Takket være maler kan det visuelle utseendet til kontroller endres uten å endre virkemåten deres: ControlTemplate lar deg endre utseendet til en kontroll, og DataTemplate angir hvordan data vises i lister og rutenett.

Databinding og WPF-maler

Grafikk, animasjon, tekst og avansert tilpasning

  • WPF-grafikksystemet tilbyr enhetsuavhengighet, koordinatpresisjon og støtte for brede fargerom. Dette resulterer i skarpe grensesnitt, presise transformasjoner og fargegjengivelse av høy kvalitet.
  • I 2D inkluderer den ferdige vektorformer, geometrier for å lage tilpassede figurer og en bred palett av pensler for gradienter, bilder, tegninger og teksturer, samt støtte for transformasjoner som rotering, skalering eller skjevhet. Disse formene deltar i inputen, får fokus og integreres i den visuelle modellen.
  • I 3D kan du integrere scener med netting, materialer og kameraer; du kan til og med projisere 2D-innhold på 3D-overflater for oppslukende opplevelser og interaktive kontroller i rommet. Selv om det er begrenset sammenlignet med full Direct3D, passer 3D-støtte i WPF godt sammen med brukergrensesnitt, dokumenter og multimedia.
  • Animasjonsmotoren er temporal og frakoblet fra rammer, slik at du kan animere enhver avhengighetsegenskap med klasser som DoubleAnimation eller ColorAnimation, administrert med storyboards. Den kan utløses av hendelser eller triggere i XAML, noe som muliggjør komplekse animasjoner med lite kode.
  • WPF har innebygd støtte for bilder og video: formater som BMP, JPEG, PNG, TIFF, GIF, ikoner og Windows Media Photo, samt WMV, MPEG og AVI, ved hjelp av kodekene som er installert på systemet.
  • Når det gjelder typografi og tekst, har den OpenType-støtte og ClearType-forbedringer, med maskinvareakselerert gjengivelse, integrert med grafikk og animasjoner for en leseopplevelse av høy kvalitet.
  • De visuelle effektene har blitt modernisert: BitmapEffects er utdatert, og siden .NET 3.5 SP1 tillater Effect GPU-akselererte filtre som BlurEffect og DropShadowEffect, samt tilpassede effekter ved hjelp av shaders.
  • Den beholdte modusen lar kontroller brytes ned i visuelle trær og effektivt administrere oppdateringer, ved å dra nytte av GPU-akselerasjon. På begrenset maskinvare er noen fordeler redusert, men plattformen yter fortsatt bra.
  • Det er enkelt å samhandle mellom WPF og andre teknologier: kan være vert for WPF-kontroller i Win32-applikasjoner og omvendt, noe som legger til rette for gradvis migrering og gjenbruk av komponenter.
  • Strategier for tilpassede kontroller inkluderer UserControl, Control og FrameworkElement, avhengig av tilpasningsnivået og separasjonen av virkemåte og utseende. Utløsere lar deg endre stiler og maler som svar på hendelser uten å endre den underliggende virkemåten, noe som beriker det visuelle designet ditt.
  • Utviklingsverktøyene har blitt forbedret: Visual Studio tilbyr XAML-design, feilsøking og ytelsesprofilering, med IntelliSense-støtte og forhåndsvisning som fremskynder opprettelsen og finjusteringen av komplekse brukergrensesnitt.
  • Det eksterne økosystemet inkluderer avanserte kontroller fra leverandører som Infragistics, Telerik og DevExpress, i tillegg til ressurser og prosjekter med åpen kildekode som Avalonia UI som inspirerer mønstre på tvers av plattformer.
  • For applikasjoner på Windows, WPF kombinerer ytelse, moderne design og fleksibel arkitektur, noe som gjør det til et solid valg sammenlignet med alternativer som Windows Forms, webapplikasjoner eller Java Swing.
  Instagrams flyktige modus: hvordan aktivere den, begrensninger og sikkerhet

Med alt det ovennevnte er WPF befestet som en kraftig plattform for å bygge skrivebordsapplikasjoner med svært tilpassbare brukergrensesnitt, robuste datamodeller, avansert grafikk og multimediestøtte. Ved å bruke ressurser som XAML, databindinger, stiler og maler kan du lage konsistente, tilgjengelige og vedlikeholdbare opplevelser som utnytter maskinvareakselerasjon og interoperabilitet med eksisterende teknologier.