Avatar billede Slettet bruger
01. februar 2010 - 23:47 Der er 14 kommentarer

WPF er da fis i en hornlygte!

Nu har jeg arbejdet en del med WPF og er pt igang med at portere vores software til WPF. Jeg har tidligere leget lidt med det og fik det indtryk at det var noget være lort. Nu har jeg så siddet med det i et par uger og været hvidt omkring og jeg har stadig den samme følelse, sikke en gang lort at udgive!

Jovist, det kan lave flotte graffiske effekter og det er ofte nemmere at få det til at se super lækkert ud. Men logikken bag det hele med bindings, dependency properties, xaml kode osv er sgu virkelig ringe tænkt. Mere ulogisk, ufærdigt og buggy ny teknologi skal man sgu lede længe efter.

Lige et par simple eksempler:

1.
Resource håndtering, eller mangel på samme, er uoverskuelig, usammenhængende, ulogisk og dybt latterlig, set i forhold til f.eks resx filer. Mage til wannabe statiske html stier til resourcer, kæft noget lort.

2.
Brugen af bindings til listviews og andre controls er åndsvag hvis man har mange controls med forskellige typer i samme window. Og så skal man oven i købet STATISK angive, FOR HVER control hvilke properties det skal bindes op på til f.eks kollonner. Det er DYBT latterligt, hvis jeg ønsker at ændre navnet, eller strukturen lidt på mit objekt.

3.
Shortcut keys på menuer er umuligt at implementere pænt, især hvis det skal gøres dynamisk! hvilken stiv kinøjser-hatte-mand har udtænkt måden at gøre det på!? :O    O...M...G

4.
En MASSE controls er buggy. En simpel control som textbox kan ikke engang give mig det rigtige antel liners tekst, eller linierne i sig selv.


5.
MASIV mangel på intellisense i xaml. Hvorfor skal jeg direkte gætte mig til at properties kan have "auto" og GradientStop.Color[0] osv når der ikke er intellisense.


6.
Runtime designer fejl IGNORERES og koden kører vidre UDEN at fejle. SUPER kristisk og talentløst, da kan føre til ret kritiske og uforklarlige designer og kode logik fejl.

7.
WPF og VS-2008 er et dårligt mix. Konstante crashes og hangs (der IKKE gemmer designer kode!!!!!) og nej, jeg er bestemt ikke den eneste...

Jeg kunne blive VED, der er 1000 ting der kræft edme er for ringe lavet og dybt, dybt ulogisk implemeteret (jeg er bestemt ikke den eneste med den holdning hvis man læser lidt på nettet)

WPF, ja skide flot, men fis i en hornlygte af olympiske dimentioner.

SUK MS!
Avatar billede arne_v Ekspert
01. februar 2010 - 23:53 #1
1)  Med hensyn til hvad der er logisk og naturligt er det jo noget subjektivt. Du kan godt synes at det er ulogisk og unaturligt mens en anden person kan finde det samme logisk og naturligt.

2)  WPF var ret nyt da VS 2008 blev lavet. Jeg vil da tro at supporten er blevet noget bedre i VS 2010 (12. april !!).
Avatar billede Slettet bruger
01. februar 2010 - 23:58 #2
Enhver udvikler der koder C# vil synes det er ulogisk. Specielt da intellisense er total mangelfuld. Simple, simple opgaver i winforms er et helvede i WPF, som f.eks menu shortcuts.

Et andet godt eksempel er listviews. HVORFOR skal kollone teksten være centreret fra default, hvor ofte har man lige brug for det!? og ikke nok med det, du kan sgu heller ikke ændre det, med mindre du styler din latterlige control specielt. Hold kæft det er talentløst
Avatar billede Syska Mester
02. februar 2010 - 00:29 #3
Jeg koder C#, og synes det meste giver meget god mening. Måske hvis du læste dig frem til hvorfor der er lavet DP ... så er det måske smart nok alligevel.

Ja, jeg synes det er genialt ... men i nogen af dine punkter kan jeg bestemt give dig ret.

VS 2008 support er ikke god, men som arne_v siger bliver den bedre i 2010. Lyder ikke som om du er designer (grafisk, der har WPF en kæmpe fordel)

På min computer er HeaderText centreret og ItemText er left ... like it should be.

Det må have været en meget lang dag for dig :-)

Men der er bestemt ingen der siger at WPF er bedre end WinForms ... WPF har en langt højere lærings kurve ... og det er ikke logisk i starte ... der er WinForms meget nemmere at komme igang med.

Men hvorfor vil i konvertere jeres program til WPF hvis i hader det så meget?
Avatar billede arne_v Ekspert
02. februar 2010 - 01:30 #4
Jeg mener også at Windcape er ret glad for WPF.
Avatar billede bitmatic Nybegynder
02. februar 2010 - 08:43 #5
Jeg synes WPF er ret genialt. Der er så mange ting der er blevet nemmere end med WinForms.

Men hvorfor er det du konverterer din program, når du synes det er noget skrald ?????
Avatar billede Slettet bruger
02. februar 2010 - 09:07 #6
Jeg giver jer helt ret i at WPF, for en grafikker, er meget overlegent. Det kan virkelig lave nogle flotte designs. Det elsker jeg det også for.

Kollonne tekst i et listview skal altså ikke være centreret. Uanset hvad, så skal det kunne ændres!

Jeg har besluttet at konvertere vores produkt (som stadig er under udvikling) til WPF, da vi ønsker et grafisk overlegent produkt, men i høj grad også, fordi vi benytter afspilning af video filer i applikationen, hvilket WPF jo understøtter out-of-the-box. Så slipper vi for at lege med buggy, ufærdige directx :)
Der er desuden brug for at placere controls ind over video delen og her står win forms af når vi snakker directx, det kan ikke gøres godt nok.
Avatar billede Syska Mester
02. februar 2010 - 17:48 #7
Start Excel ... der er det også centreret.
Tag en normal html table tag, th ... der er det også centreret.
Så den er jeg bestemt ikke enig i.

Med directx har du mulighed for at styre det hele selv, ligesom MS gør ... så hvis du ikke er tilfreds kan du vel altid selv udvikle dine egne controls.

Som sagt ... der findes ingen perfekte produkter, alt har en eller anden form for fejl. Jeg vil i hvert fald gerne se det modsatte bevist.

mvh
Avatar billede arne_v Ekspert
01. marts 2010 - 01:42 #8
Tid at få afsluttet her?
Avatar billede wired Nybegynder
10. februar 2011 - 14:42 #9
Pragtfuldt indlæg.

Som C# programmør og skal til at starte med WPF, er det skønt at høre om de problemer og fustrationer der kan opstår når man prøver at angribe WPF set fra en C# programmør.

Jeg er som nævnt lige begyndt med WPF og vil bare have en kontrol til at bevæge sig rundt i winduet og skifte retning hver gang den rammer windowskanten, men får allerede problemer som at kontrollen ikke er inde i tråden og jeg skal derfor skrive noget i retning af:"

Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate(){ }"

Det virker underligt og besværligt. Kan det ikke gøres nemmere hvis man angriber det WPF-mæssigt korrekt og i såfald hvordan.

I Windows Form kan det gøres på 6 linjer.

Hvordan løses det i WPF?
Avatar billede Syska Mester
11. februar 2011 - 21:23 #10
Lav en Animation ... den gør netop sådanne ting.

Men overstående problem har du også i WinForms, så intet forskelligt der ... det er bare blevet gjort nemmere i WPF :-)

"Cross Thread Violation" kom vist med i .NET 2.0

mvh
Avatar billede wired Nybegynder
11. februar 2011 - 21:45 #11
Lyder interessant. Mange tak for svaret.
Kan man lave en undelig animation af en control som skifter retning hver gang den rammer windowskanten og som tilpasser sig når windowsstørrelsen ændres?
Kan det gøres i en animation eller skal man lave flere og fylder det så også kun 6 kodelinjer som i Windows form?
Avatar billede Syska Mester
11. februar 2011 - 21:52 #12
Pas ...

Ja, du kan vel lave dem dynamiske ... og når der trækkes i vinduet, kan man jo ændre sin animation ... det er jo kun altid 2 der skal ændres.

Men WPF Animation ... er hvad du skal kigge på. Jeg har ikke selv brugt det, men burde være rimelig nemt.

mvh
Avatar billede wired Nybegynder
11. februar 2011 - 23:02 #13
Min oplevelse af WPF Animation er at de er statiske. Dvs. Flyt,drej, roter en control fra a til b, hvor du på forhånd ved hvad a og b er.
Fidusen ved at lade en control bevæge sig rundt på skærmen er at du ikke ved hvad b er, du bevæger den bare en pixel frem og ned og ser efter om det er kanten hvis ikke gentages proceduren.

Men jeg giver det et forsøg.
Avatar billede Syska Mester
12. februar 2011 - 00:07 #14
Der er sikkert nogen events du kan hooke dig ind på ... og se om der er colision ... og så lave en ny animation.

Du kan jo lave en animation i et uendelig loop ... og deraf noget også sige +/+ på begge akser.

Jeg er dog ingen ekspert, kun læst om det ... men mon ikke man kan på en smart måde.

Jeg ser gerne din løsning med hvad du kommer frem til.

mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester