Windows Presentation Forms (WPF) vs. WinForms

Tags:    winforms wpf visual-studio c#

Hej allesammen

Da jeg er i gang med at lege med C#, så ville jeg gerne høre om der var nogle der kunne give mig en mindre gennemgang af hvad forskellene på Windows Presentation Forms (WPF) og WinForms er, samt hvilket et jeg skal vælge.

Da jeg kommer fra Java platformen, har jeg været vant til at lave GUI i swing, hvilket ligger lidt tættere på WinForms (Dog sørger VS2010 for at lave GUI koden, så jeg kan fokusere på GUI'ens code-behind). Har dog set at WPF benytter XAML, som dens UI sprog, som jo er en slags XML, og derfor rimelig let at forstå, og gøre brug af. Har også læst mig til at WPF er bedst hvis din applikation, skal indeholde grafik, lyd eller video (multimedia), og det er ikke noget jeg direkte har tænkt mig at benytte mig af. Derimod har jeg også læst at det er langt nemmere at modificere UI, rent udseende mæssigt med WPF, fremfor WinForms, men hvis jeg har en helt almindelig applikation (simpel applikation), som kun benyttes af en bruger, som kan indsætte, opdatere, læse og slette data fra en database, vil det så være en for stor mundfuld at begynde at kode den i WPF?

Håber at spørgsmålet er forstået, og glæder mig til at høre fra jer



10 svar postet i denne tråd vises herunder
7 indlæg har modtaget i alt 28 karma
Sorter efter stemmer Sorter efter dato
du kan tage et kig her:
http://stackoverflow.com/questions/1337345/what-is-the-difference-between-wpf-and-winforms

men hvad du skal vælge er enligt ret klar, du skal tage WPF!

grund til det er at WPF(eller retter XAML) er det sprog som MS vil have sine udviklere til at udvikle i fremadrettet.
ud over det så kan du bruge XAML til både Silverlight, WP7 og så er det sammen med HTML/CSS de 2 sprog som du kan skrive metro apps i til Windows 8.



Hej,

WPF er den "nye" dreng i klassen som var (er) spået at skulle overtage rollen som det foretrukne værktøj til udvikling af tunge klienter, heriblandt windows 8 når den kom. Senere blev det Silverlight (og endnu senere en JavaScript variant) der skulle være det altfavnende værktøj. I sidste ende er det vist ikke blevet nogle af dem, så vidt jeg har forstået.
Styrken i WPF kontra WinForms er for det første den meget store frihed du har i opbygningen af dine programmers udseende; Det er ikke, som i WinForms, fast-definerede komponenter du benytter til opbygningen. Alt kan, stort set, defineres og bestemmes af dig selv.
Rent teknisk skulle der være en hastighedsgevinst ved, at WPF benytter DrectX, modsat det aldrende GDI+, til selv at tegne det hele.

Programmeringsmæssigt er min personlige mening, at det stort set er samme mængde arbejde der skal bruges for at producere noget brugbart. Mange af de færdigheder man har opnået i WinForms programmering kan stadigvæk benyttes i WPF udviklingen.

Det er påstået at man uden problemer kan blande begge teknologier, men jeg har ingen erfaring med dette og er ikke umiddelbart meget for at anbefale det.

Når alt det er sagt/skrevet vil jeg lægge hovedet på blokken og påstå at WinForms-teknologien vil eksistere et godt stykke tid endnu




Yep WinForms vil eksistere, men MS har selv meldt ud at de sprog der skal bruges i "fremtiden"(Windows 8 og frem) vil være HTML/CSS og XAML til UI og C#/VB/Javascript/C++ til kode.
samt at i deres Windows store(eller hvad de nuvil kalde deres "app store") vil det kun være Metro apps som kan tilføjes og Metro apps skal laves i Html/CSS eller XAML.



hvis jeg har en helt almindelig applikation (simpel applikation), som kun benyttes af en bruger, som kan indsætte, opdatere, læse og slette data fra en database, vil det så være en for stor mundfuld at begynde at kode den i WPF?


Jeg har ik rodet med C# ret længe, men hvis der ikke er skeet det vilde der siden jeg var der, så vil jeg mene at WinForms er helt fint til den app du vil lave.

Som du selv er inde på så er WPF en fordel til grafik, animation, media, skins osv.
Så hvis det er for hyggens skyld du laver det, så er WPF da cool nok, men jeg ville ikke bruge extra tid på at sætte mig ind i WPF for at lave et simpelet database app





Indlæg senest redigeret d. 01.03.2012 18:50 af Bruger #3427
Jeg er også hoppet direkte på WPF vognen, og det er helt utrolig den kraft der er i det. Det er specielt deres DataBinding der er helt fantastisk. Du laver en helt løs kobling mellem din UI og din klasse og når du så ændrer din property i din klasse ændres UI automatisk.

Jeg har lavet vores (mit firmas) digitale skilte afspiller i WPF og er ved at bygge et administrationsværktøj til den. Hvis du rigtig skaludnytte WPF skal du væk fra WinForms tanken om at styre din UI fra din codebehind. Du skal bruge binding delen og så ikke bekymre dig mere over det.

Du skal kigge på Model View ViewModel (MVVM) pattern til dine WPF applikationer, så begynder det at være rigtigt stærkt. Du vil blive forbavset over hvor lækkert det kan blive at arbejde med. Et view har eks. et tilknyttet dataobjekt (DataContext), du kan konfigurere din XAMl således at den skifter layout/UI alt efter hvilket objekttype der er som DataContext (fx. hvis det er et bilobjekt viser den et type view, hvis det er et brugerobjekt viser den noget andet - alt dette automatisk på runtime).



Hejsa Martin

Jeg har rodet med Winforms i et par år og nu også begyndt at pille noget mere med WPF.
Og jeg vil sige som de andre spring du bare på "den nye dreng" WPF for det er ikke så slemt.
Winforms har sine egne kontroller som du kan gøre brug af, men WPF har fordelen af at du selv kan definere ting som du vil.
Det som netop er så fedt i WPF er at du får lov til stort set alt, så du kan lave vilde ting - både gode som dårlige. Dette er også fordi som du selv er inde på XAML kan du som XML gruppere ting og neste dem. Det giver nogle helt andre muligheder som man ikke er vant til fra Winforms.

Hvis vi tager et eksempel der kan vise muligheder og forskelle:
Dropdowns i Winforms er rimeligt begrænsede til du kan putte en tekst i hvert item.
WPF derimod kan du strukturere lige som du selv ønsker, så hvis du vil ha dropdowns i den så kan du gøre det.

Hvis det er en simpel applikation så der stadig mulighed for at lave samme drag and drop som med Winforms, men WPF er dog meget mere baseret imod du ikke skal have så meget codebehind for at få data i dine kontroller - men mere du binder dine data imod nogle resourcer.

Fordelen er lidt at hvis du begynder at lære det så vil en fremtidig større avanceret applikation give dig mange flere muligheder og grafiske virkemidler er meget bedre. Og det kan være rigtigt effektivt at bruge farver og grafiske virkemidler til at vise en state for dine brugere og der er mange flere muligheder med WPF.
Kræver lidt tilvænning når det bliver mere avanceret, men det er muligt.

Held og lykke med det :)



jeg brugte det her da jeg skulle i gang med WPF for et års tid siden:
http://wpftutorial.net/LearnWPFin14Days.html

samt denne her bog:

Pro WPF in c# 2008

og som de andre skriver er en af de smarte ting i WPF Klart DataBinding!



Indlæg senest redigeret d. 01.03.2012 22:14 af Bruger #17017
hvis jeg har en helt almindelig applikation (simpel applikation), som kun benyttes af en bruger, som kan indsætte, opdatere, læse og slette data fra en database, vil det så være en for stor mundfuld at begynde at kode den i WPF?


Jeg har ik rodet med C# ret længe, men hvis der ikke er skeet det vilde der siden jeg var der, så vil jeg mene at WinForms er helt fint til den app du vil lave.

Som du selv er inde på så er WPF en fordel til grafik, animation, media, skins osv.
Så hvis det er for hyggens skyld du laver det, så er WPF da cool nok, men jeg ville ikke bruge extra tid på at sætte mig ind i WPF for at lave et simpelet database app

Må indrømme at grunden til at applikationen også er simpel, er fordi jeg øver mig med at lave appliaktioner med C# :)

Tror jeg vil prøve WPF, for at øve det med XAML også, samt for hurtigere at vende mig til det sm Microsoft siger er en del af fremtiden :P



Indlæg senest redigeret d. 01.03.2012 20:21 af Bruger #4487
Det begyndte allerede at lyde meget mere spændende :P Kan I forresten anbefale nogle goder bøger og/eller artikler omkring emnet, gerne henvendt til begynderen



hvis jeg har en helt almindelig applikation (simpel applikation), som kun benyttes af en bruger, som kan indsætte, opdatere, læse og slette data fra en database, vil det så være en for stor mundfuld at begynde at kode den i WPF?


Jeg har ik rodet med C# ret længe, men hvis der ikke er skeet det vilde der siden jeg var der, så vil jeg mene at WinForms er helt fint til den app du vil lave.

Som du selv er inde på så er WPF en fordel til grafik, animation, media, skins osv.
Så hvis det er for hyggens skyld du laver det, så er WPF da cool nok, men jeg ville ikke bruge extra tid på at sætte mig ind i WPF for at lave et simpelet database app

Må indrømme at grunden til at applikationen også er simpel, er fordi jeg øver mig med at lave appliaktioner med C# :)

Tror jeg vil prøve WPF, for at øve det med XAML også, samt for hurtigere at vende mig til det sm Microsoft siger er en del af fremtiden :P


Alså hvis du har tænk dig er starte på C# for good, så kan du lige så godt gå igang med WPF ja, men hvis det bare er et hurtigt project for en eller anden, så som en lille database, så er WinForms fint =)



t