understanding the mvvm pattern
DESCRIPTION
Understanding the MVVM pattern. Laurent Bugnion Senior User Experience Integrator IdentityMine http://[www|blog].galasoft.ch http://www.identitymine.com. What is MVVM?. A weird acronym Model – View – ViewModel « MVVM in a SLOOB with SLUT » Woven into WPF/SL Some confusion: - PowerPoint PPT PresentationTRANSCRIPT
Laurent BugnionSenior User Experience IntegratorIdentityMinehttp://[www|blog].galasoft.chhttp://www.identitymine.com
Understanding the MVVM pattern
What is MVVM?
A weird acronymModel – View – ViewModel« MVVM in a SLOOB with SLUT »
Woven into WPF/SLSome confusion:
MVVM is really just the patternThe rest are helpers, practices, etc
The MVC pattern
Model View
Controller
The Passive View pattern
Model View
Controller
The Presentation Model pattern
Model View
Presentation Model
(ViewModel)
DataBinding
Blendability
Testability, Maintainability, Blendability
“The ability to be edited in Blend”
(and Visual Studio designer…)
Differentiate code in design and runtime
Create design time data
Demo
Hello MVVM (and Hi Blend)
Bridging the gap
View
ViewModel
DataBinding Commands Messages
Model
Bridging the gap
View
ViewModelView
ViewModel
View
ViewModelMessages
Messages+ callback
Commands
“Point of entry” for a methodCan be data boundICommand interface
Execute methodCanExecute methodCanExecuteChanged event
Messaging
Should be simple by defaultPossible to open filtered channels
To a target Type (or an Interface)With a Token
No constraints at all
Demo
Commands and RelayCommands,Messaging
MVVM Light Toolkit
“Breaking the monotony”http://www.galasoft.ch/mvvm/getstartedhttp://mvvmlight.codeplex.comV3 SP1 released with phone supportKeep it smallKeep it simple
MVVM Light Toolkit
ESSENTIALSRelayCommandMessengerViewModelBase
EXTRASEventToCommandDispatcherHelper
MVVM Light Toolkit
Project templates (VS + Blend)Item templates (VS + Blend)Code snippets
Demo
MVVM Light, Unity, Blendability
Flaws of MVVM
Too much code neededINotifyPropertyChangedCommands
Some operations are tricky (set focus…)Not applicable to ASP.NET, etcMessage to community is not clear
Debunk the myths
“No code in the code behind”“If you put code in the View's code-behind, the MVVM police will take your family away”“No need for converters”
“MVVM is only suitable for big projects”“MVVM costs performance”“MVVM is complex / makes my head hurt”
Debunk the myths
“I don’t need separation because I don’t have a designer”“You cannot use MVVM with other patterns”“MVVM will make you rich and attractive”
Further informationhttp://blog.galasoft.ch
http://www.galasoft.ch/mvvm/getstarted
http://tinyurl.com/mvvmexplained
Twitter: @LBugnion