22

Understanding the MVVM pattern

  • Upload
    lily

  • View
    63

  • Download
    0

Embed Size (px)

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

Page 1: Understanding the MVVM pattern
Page 2: Understanding the MVVM pattern

Laurent BugnionSenior User Experience IntegratorIdentityMinehttp://[www|blog].galasoft.chhttp://www.identitymine.com

Understanding the MVVM pattern

Page 3: 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

Page 4: Understanding the MVVM pattern

The MVC pattern

Model View

Controller

Page 5: Understanding the MVVM pattern

The Passive View pattern

Model View

Controller

Page 6: Understanding the MVVM pattern

The Presentation Model pattern

Model View

Presentation Model

(ViewModel)

DataBinding

Page 7: Understanding the MVVM pattern

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

Page 8: Understanding the MVVM pattern

Demo

Hello MVVM (and Hi Blend)

Page 9: Understanding the MVVM pattern

Bridging the gap

View

ViewModel

DataBinding Commands Messages

Model

Page 10: Understanding the MVVM pattern

Bridging the gap

View

ViewModelView

ViewModel

View

ViewModelMessages

Messages+ callback

Page 11: Understanding the MVVM pattern

Commands

“Point of entry” for a methodCan be data boundICommand interface

Execute methodCanExecute methodCanExecuteChanged event

Page 12: Understanding the MVVM pattern

Messaging

Should be simple by defaultPossible to open filtered channels

To a target Type (or an Interface)With a Token

No constraints at all

Page 13: Understanding the MVVM pattern

Demo

Commands and RelayCommands,Messaging

Page 14: Understanding the MVVM pattern

MVVM Light Toolkit

“Breaking the monotony”http://www.galasoft.ch/mvvm/getstartedhttp://mvvmlight.codeplex.comV3 SP1 released with phone supportKeep it smallKeep it simple

Page 15: Understanding the MVVM pattern

MVVM Light Toolkit

ESSENTIALSRelayCommandMessengerViewModelBase

EXTRASEventToCommandDispatcherHelper

Page 16: Understanding the MVVM pattern

MVVM Light Toolkit

Project templates (VS + Blend)Item templates (VS + Blend)Code snippets

Page 17: Understanding the MVVM pattern

Demo

MVVM Light, Unity, Blendability

Page 18: Understanding the MVVM pattern

Flaws of MVVM

Too much code neededINotifyPropertyChangedCommands

Some operations are tricky (set focus…)Not applicable to ASP.NET, etcMessage to community is not clear

Page 19: Understanding the MVVM pattern

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”

Page 20: Understanding the MVVM pattern

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”

Page 21: Understanding the MVVM pattern

Further informationhttp://blog.galasoft.ch

http://www.galasoft.ch/mvvm/getstarted

http://tinyurl.com/mvvmexplained

Twitter: @LBugnion

Page 22: Understanding the MVVM pattern