11
WPF MVVM Training Michael Sync (Silverlight MVP)

WPF MVVM Training Michael Sync (Silverlight MVP)

  • View
    230

  • Download
    2

Embed Size (px)

Citation preview

Page 1: WPF MVVM Training Michael Sync (Silverlight MVP)

WPF MVVM TrainingMichael Sync (Silverlight MVP)

Page 2: WPF MVVM Training Michael Sync (Silverlight MVP)

Adopting the MVVM pattern with WPF

• Understanding MVVM• Motivation and benefits• Implementing the pattern• Dependency Injection and IoC• Unit Test and Mock• Supporting libraries and frameworks

Page 3: WPF MVVM Training Michael Sync (Silverlight MVP)

What's MVVM?

• is an architectural pattern created by John Gossman from WPF team

• is a variation of MVC pattern• is similar to Martin Fowler’s

PresentationModel pattern• WPF Data Binding & Commanding

Page 4: WPF MVVM Training Michael Sync (Silverlight MVP)

Motivation and benefits

• Testabiltiy ( ViewModel is easier to unit test than code-behind or event driven code)

• Clear seperation between UX designer and developer• Increases the "Blendability" of your view• Model never needs to be changed to support

changes to the view• ViewModel rarely needs to be changed to support

changes to the view• No duplicated code to update views

Page 5: WPF MVVM Training Michael Sync (Silverlight MVP)

MVVM

• View knows ViewModel• ViewModel knows Models• But not vice versa.

View ViewModel Model

Page 6: WPF MVVM Training Michael Sync (Silverlight MVP)

View

• represents the user interface that the user will see.

• can be a user control or Data Template• shouldn't contain any logic that you want to

test• Keep the view as simple as possible.

Page 7: WPF MVVM Training Michael Sync (Silverlight MVP)

View Model

• An abstraction of View• Connector between View and Model• Keep View State, Value Conversion• No strong or weak (via Interface) reference of

View• Make VM as testable as possible (e.g. no call

to Singleton class)• No Control related Stuff in VM

Page 8: WPF MVVM Training Michael Sync (Silverlight MVP)

Model

• can be Data Model, DTO, POCO, auto-generated proxy of domain class and UI Model based on how you want to have the separation between Domain Service and Presentation Layer

• No reference to ViewModel

Page 9: WPF MVVM Training Michael Sync (Silverlight MVP)

Disadvantages of MVVM• lack of standardization so

everyone has own favor• For simple UI, M-V-VM can be

overkill

Page 10: WPF MVVM Training Michael Sync (Silverlight MVP)

Implementing MVVM• DEMO – Simple MVVM• DEMO – MVVM + Data Template• DEMO – DI + IoC• DEMO – BDD

Page 11: WPF MVVM Training Michael Sync (Silverlight MVP)

Supporting libraries and frameworks

• WPF Team : MVVM Toolkit• MS Pattern and Practice Team : Composite WPF (Prism)• Josh Smith. "MVVM Foundation"• Sacha Barber. "Cinch."• Karl Shifflett. "Ocean"• Laurent Bugnion. "MVVM Light Toolkit"• Lester Lobo. "CoreMVVM"• Rob Eisenberg. "Caliburn"• William e Kempf. "Onyx"• Peter O’Hanlon. "GoldLight"• jbe. "WPF Application Framework (WAF)"• Paul Stovel : MacroModels