Rohde & Schwarz - WPF Det bedste siden skiveskåret brød? v/Magnus Toftdal Lund
Magnus Toftdal Lund WPF siden.Net 3.0 (~2006) Primært LOB-applikationer Booking/disponering løsning med grafisk disponering ERP-system (v1, så v2 og til sidst porteret til ASP.NET MVC) Diverse hobbyprojekter
Hvorfor WPF? Arvtageren fra Windows Forms RAD (Rapid Application Development) Deklarativt (XAML er et subset af XML) Adskillelse mellem layout og design (og forretningslogik) Kan køre i en browser…’ish
Layout (Panels & Controls) Regler fra XML, dvs. Som udgangspunkt kun et child – pånær panels/list-kontroller Nesting (hierakisk opbygget) Two-stage layout-render DIP – Device Independant Pixels – udgangspunkt: Relative størrelser Ikke ret mange kontroller, men de kan komponeres
Styles/templates Tænk HTML/CSS – styles og templates er CSS-delen Hierarki – lokal -> inherited -> style -> global style App.xaml – her defineres globale styles Resources – alle elementer har dem – scope!
Show me the money! Tid til demo
Data-binding Deklarativt ovenpå data En-vejs vs. to-vejs INotifyPropertyChanged vs. INotifyCollectionChanged
Show me the money! Tid til demo
M-V-VM Model – forretningslogik – kender hverken ViewModel eller View ViewModel – ”Alt det UI kunne tænke sig” - kender Model, men ikke View View – ”ren eye-candy” kender ViewModel, men ikke Model Klar separation af ansvar - alt UI ”snavs” ligger i ViewModel Stort set ingen code-behind i views (!)
Show me the money! Tid til demo
Hvad nu? Prism – modulopbyggede applikationer IoC – Inversion of Control – Unity/MEF/Castle Windsor osv