TOC

This article is currently in the process of being translated into Norwegian Bokmål (~99% done).

About WPF:

WPF vs. WinForms

I det forrige kapittelet snakket vi om hva WPF er, og litt om WinForms. I dette kapittelet vil jeg forsøke å sammenligne de to, fordi selv om de begge tjener samme formål er det MANGE forskjeller mellom de. Hvis du aldri har jobbet med WinForms før, og spesielt hvis WPF er ditt aller første GUI-rammeverk, kan du hoppe over dette kapittelet. Men hvis du er interessert i forskjellene så fortsett å les.

Den aller viktigste forskjellen mellom WinForms og WPF er fakta at mens WinForms simpelt er et lag på toppen av de standard Windows-kontrollene (som f.eks. en tekstboks), er WPF bygd fra begynnelsen og avhenger ikke av standard Windows-kontrollere i nesten alle situasjoner. Dette kan virke som en diskré forskjell, men det er virkelig ikke det, som du definitivt vil legge merke til hvis du har jobbet med et rammeverk som avhenger av Win32/WinAPI.

Et godt eksempel på dette er en knapp med et bilde og tekst på seg. Dette er ikke en standard Windows-kontroll, så WinForms tilbyr deg ikke dette rett ut av boksen. I stedet må du tegne bildet selv, implementere din egen knapp som støtter bilder, eller bruke en tredjeparts-kontroll. Med WPF kan en knapp inneholde hva som helst fordi den essensielt er en grense med innhold og forskjellige stater (som f.eks. urørt, hovret, presset). WPF-knappen er "look-less", som de fleste andre WPF-kontrollene, som betyr at den kan inneholde flere andre forskjellige kontrollere. Du vil ha en knapp med et bilde og litt tekst? Bare putt et bilde og en tekstblokk-kontroll inni knappen og du er ferdig! Du får simpelt ikke denne type fleksibilitet ut av standard WinForms-kontrollere, som er hvorfor det er et stort marked for enkle implementasjoner av kontrollere som knapper med bilder og slikt.

Ulempen med denne fleksibiliteten er at noen ganger må du jobbe hardere for å oppnå noe som var veldig enkelt med WinForms, fordi det ble skapt kun for scenarioet du trenger det for. Det er ihvertfall slik det føles ut i begynnelsen, hvor du lager maler for å lage listevisning med et bilde og litt finplassert tekst, noe WinForms listevisningselement gjør i en enkel kodelinje.

Dette var kun en forskjell, men mens du jobber med WPF vil du innse at dette faktisk er den underliggende grunnen for mange av de andre forskjellene. WPF gjør rett og slett ting på sin egen måte, for bedre og verre. Du er ikke lenger begrenset til å gjøre ting på Windows-måten, men for å få denne typen fleksibilitet, betaler du med litt mer arbeid når du egentlig bare ønsker å gjøre ting på Windows-måten.

Det følgende er en fullstendig subjektiv liste av de viktigste fordelene med WPF og WinForms. Det bør gi deg en bedre forståelse av hva du er på vei til å sette deg inn i.

WPF fordeler

  • Det er nyere og derfor mer samsvarende med nåtidens standarder.
  • Microsoft bruker det til mange nye applikasjoner, f.eks. Visual Studio.
  • Det er mer fleksibelt, så du kan gjøre flere ting uten å måtte skrive eller kjøpe nye kontroller.
  • Når du trenger å bruke tredjeparts-kontroller vil utviklerne av disse kontrollene mest sannsynlig være mer fokusert på WPF fordi det er nyere.
  • XAML gjør det enkelt å lage og redigere din GUI, og tillater arbeidet å bli splittet opp mellom en designer (XAML) og en programmerer (C#, VB.NET etc).
  • Databinding, som tillater deg å få en renere separasjon av data og oppsett.
  • Bruker maskinvareakselerasjon for å tegne GUI for bedre ytelse.
  • Det tillater deg å lage brukergrensesnitt for både Windows-applikasjoner og webapplikasjoner (Silverlight/XBAP).

WinForms fordeler

  • Det er eldre og derfor mer prøvd og testet.
  • Det finnes allerede mange tredjeparts-kontroller som du kan kjøpe eller skaffe deg gratis.
  • Designeren i Visual Studio er fremdeles, ifølge datoen dette ble skrevet, bedre for WinForms enn for WPF, hvor du må gjøre mer av arbeidet selv med WPF.