Download presentation
2
Understanding the MVVM pattern
Laurent Bugnion Senior User Experience Integrator IdentityMine
3
Model – View – ViewModel « MVVM in a SLOOB with SLUT »
What is MVVM? A weird acronym Model – View – ViewModel « MVVM in a SLOOB with SLUT » Woven into WPF/SL Some confusion: MVVM is really just the pattern The rest are helpers, practices, etc
4
The MVC pattern Model View Controller
5
The Passive View pattern
Model View Controller
6
The Presentation Model pattern
View DataBinding Presentation Model (ViewModel)
7
Testability, Maintainability, Blendability
“The ability to be edited in Blend” (and Visual Studio designer…) Differentiate code in design and runtime Create design time data
8
Hello MVVM (and Hi Blend)
Demo of connection to WCF service, fails in Blend Show how to attach to process Identify problem IsInDesignMode
9
Bridging the gap View DataBinding Commands Messages ViewModel Model
10
View ViewModel View ViewModel View ViewModel
Bridging the gap View ViewModel View ViewModel Messages View ViewModel Messages + callback
11
“Point of entry” for a method” Can be data bound ICommand interface
Commands “Point of entry” for a method” Can be data bound ICommand interface Execute method CanExecute method CanExecuteChanged event handler
12
Commands and RelayCommands
Demo of connection to WCF service, fails in Blend Show how to attach to process Identify problem IsInDesignMode
13
RelayCommands RelayCommand MyCommand = new RelayCommand( () => ..., () => true | false); RelayCommand<T> MyGenericCommand = new RelayCommand<T>( p => ..., p => true | false);
14
Should be simple by default Possible to open filtered channels
Messaging Should be simple by default Possible to open filtered channels To a target Type (or an Interface) With a Token With various Messenger instances No constraints at all
15
Messaging Demo of connection to WCF service, fails in Blend
Show how to attach to process Identify problem IsInDesignMode
16
Messaging Messenger.Default.Register<T>( this, p => DoSomething(p)); Messenger.Default.Send<T>(p);
17
“Breaking the monotony” http://www.galasoft.ch/mvvm/getstarted
MVVM Light Toolkit “Breaking the monotony” V3 released at MIX10 Keep it small Keep it simple
18
ESSENTIALS RelayCommand Messenger ViewModelBase EXTRAS EventToCommand
MVVM Light Libraries V3 ESSENTIALS RelayCommand Messenger ViewModelBase EXTRAS EventToCommand DispatcherHelper
19
Project templates (VS + Blend) Item templates (VS + Blend)
MVVM Light Tools V3 Project templates (VS + Blend) Item templates (VS + Blend) Code snippets
20
MVVM Light Toolkit, Unity, Blendability
Demo of connection to WCF service, fails in Blend Show how to attach to process Identify problem IsInDesignMode
21
INotifyPropertyChanged Commands
Flaws of MVVM Too much code needed INotifyPropertyChanged Commands Some operations are tricky (set focus…) Not applicable to ASP.NET, etc Message to community is not clear
22
“No code in the code behind”
Debunking 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”
23
“I don’t need separation because I don’t have a designer”
Debunking 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”
24
MVVM on the Windows Phone 7
Demo of connection to WCF service, fails in Blend Show how to attach to process Identify problem IsInDesignMode
25
Thanks @LBugnion http://blog.galasoft.ch
@LBugnion
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.