Jak dostat MVVM do WPF aplikace - materiály
Včera jsem v prostorách české pobočky Microsoftu povídal něco málo na téma Jak dostat MVVM do WPF aplikace. Za hodinu a půl jsem probral postupně nevýhody klasického přístupu k vývoji WPF aplikace a na, snad reálné, ukázce jsem předvedl nevýhody takového přístupu.
Poté jsem krátkým povídáním účastníky obeznámil s tím, jaké jsou možnosti udělat aplikaci snadněji udržovatelnou, lépe testovatelnou, využívající možností WPF - především pak obousměrného DataBindingu. Také jsem na ukázce předvedl, jak do takové aplikace zařadit IoC/DI kontejner, konkrétně Unity a v neposlední řadě jsem demonstroval možnost, kterou nabízí využití prezentačního vzoru MVVM při tvorbě uživatelského rozhraní v Expression Blendu, kdy je možné do xaml zapsat testovací prezentační data.
Doufám, alespoň dle ohlasu, že se přednáška líbila. Osobně jsem z ní měl dobrý pocit. A určitě se budu těšit na setkání při nějakém dalším povídání na obdobné téma zabývající se WPF/Silverlight a xaml.
Materiály
Jelikož byla přednáška jeden velký příklad, a téměř minimum prezentačních slajdů, přikládám poslední fázy dokončené aplikace. Zároveň v nadcházejících článcích projdu celým příkladem a pokusím se jej popsat.
PS: dle předběžné domluvy s MS by se přednáška mohla uskutečnit i v Brně a možná i Ostravě (někdy v březnu či dubnu).
Přednáška byla fajn, díky.
Měl bych dotaz, ve své aplikaci používaš View-first přístup. Máš k tomu nějaký dobrý důvod nebo je to čistě pocitové? Já tak nějak intuitivně používám ViewModel-first přístup a View k němu přiřazuji pomocí data template. To mi umožní v případě potřeby ten View vyměnit na jednom místě. Zatím jsem nenarazil na nějaké zásadní omezení, ale možná víš víc ;-)
Marek
PS: Doufám, že nevadí, že Ti tykám ;-)
Ahoj, daný přístup byl dán spíše vzniklou situací, kdy to bylo snazší demonstrovat. Jinak, každý z těchto přístupů má něco do sebe a ve výsledku asi záleží na tom, jaký framework použiješ a jaký ten framework dovolí přístup.
U PRISM třeba používám ViewModel first do kterého injectuji View přes rozhraní. Je to dáno tím, že ta vazba mezi View-ViewModel je 1:1. Pokud bych měl několik různých View, které by mohl obsluhovat právě jeden ViewModel (nikoliv instance, ale typ), tak bych asi použil View-first přístup.
Těch rozhodovacích vah však může být několik a každému může vyhovovat něco jiného.
Jinak díky za reakci i účast.
PS: tykání vůbec nevadí