Understanding the MVVM pattern

Preview:

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 Presentation

Citation preview

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

Recommended