SlideShare a Scribd company logo
MVVM Light Toolkit
Works Great, Less Complicated
             Tom Fischer
          September 29, 2011
Agenda


∗ Background
  ∗ Enterprise Applications
  ∗ XAML
  ∗ Ramifications
∗ Architecture Considerations
  ∗ Patterns
  ∗ Toolkits
∗ Toolkit Demonstration
  ∗ Sample Application
  ∗ Incorporating MVVM Light
Background:
Enterprise Application Definition

∗ Targets
  ∗ Any type of organization
  ∗ Any type of industry
∗ Not intended for consumers
∗ Function focused, such as, accounting, purchasing,
  sales, etc.
Background:
Enterprise Application Sample
Background:
XAML Snippet
Background:
             XAML Definition

∗ Declarative markup language for .NET API with XML
  nodes equating to CLR objects
∗ Features include
  ∗ Rich eventing support
  ∗ Declarative databinding
  ∗ Developer friendly conventions, such as, the content
    property equals the “inner xml” of many nodes
Background:
XAML & CLR Objects
Background:
                Ramifications


∗ Enterprise applications do not ruthlessly follow well
  trodden UI guidelines; business users know what they
  want
∗ XAML does not mirror ASP.NET or Windows Form
  technologies, blindly adhering to their patterns &
  practices may result in harder to build and maintain
  Silverlight/WPF applications
Architecture Considerations:
                 Options


∗ Patterns                            ∗ Toolkits
  ∗   Code Behind                        ∗   Caliburn Micro
  ∗   MVC                                ∗   Catel
  ∗   MVP                                ∗   MVVM Foundation
  ∗   MVVM                               ∗   MVVM Light Silverlight
                                         ∗   Simple MVVM
                                         ∗   Prism

              Note: The above lists are NOT exhaustive.
             Many other relevant patterns and toolkits exist.
Architecture Considerations:
  The UI Pattern’s Pattern
Architecture Considerations:
         UI Pattern Picking


∗ Theoretical considerations
  ∗ Not the same as most software patterns (maybe why
    some call them “frameworks”?)
  ∗ Technology dominates
∗ Practical considerations
  ∗ Application complexity and life span
  ∗ Development team’s abilities and interests
  ∗ Organizational resources and support
Architecture Considerations:
    UI Patterns and Technology

∗ MVC (Model-View-Controller)
  ∗ Conceived when viewers offered very little support for a
    software developer writing presentation code
  ∗ Built with language and platform specific helpers
∗ MVP (Model-View-Presenter)
  ∗ 2nd generation MVC; facilitated testing
  ∗ Response to feature rich viewers
∗ MVVM (Model-View-ViewModel)
  ∗ 3rd generation MVC; reduced coder/designer friction
  ∗ Response to XAML
Architecture Considerations:
          Toolkit Overview


∗ Plugs gap between technology and its use; maybe
  entitled “helper” code!?
∗ Considerations
  ∗ Fit (Simple as possible, but not simpler)
    ∗ How well does it plug the gap?
    ∗ Does it include more than required?
  ∗ Obsolescence susceptibility
    ∗ Handle newer, better technologies
    ∗ Ingest requirement/application changes
Architecture Considerations:
              Prism Toolkit

∗ Overview
  ∗ Supports WPF and Silverlight
  ∗ Available on Microsoft Download Center
      ∗ V4 (11/2010)
∗ Supports MVVM many features, such as,
  ∗   Bootstrapper
  ∗   Dependency Injection (Unity & MEF)
  ∗   Composition (über)
  ∗   Event Aggregator
  ∗   Wiring Commands & Events
Side Note:
Prism It’s Complicated, Documented & Supported
Architecture Considerations:
         Caliburn Micro Toolkit

∗ Overview
  ∗ Supports WPF, Silverlight and Windows 7
  ∗ Paired down version of Caliburn (10X smaller)
  ∗ Available on CodePlex
      ∗ V1.2 RTW (7/2011)
      ∗ 2,000+ downloads
∗ Supports MVVM and MVP with
  ∗   Bootstrapper
  ∗   Composition
  ∗   Event Aggregator
  ∗   Window Manager
  ∗   Wiring Commands & Events
Architecture Considerations:
        MVVM Light Toolkit


∗ Overview
  ∗ Supports WPF, Silverlight and Windows 7
  ∗ Available on CodePlex
    ∗ V3 SP1 (2/2011)
    ∗ 20,000+ downloads
∗ Supports MVVM with
  ∗ Event Aggregator
  ∗ Service Locator
  ∗ Wiring Commands & Events
Side Note:
What about CSLA.NET, Enterprise Library & Entity Framework?




  ∗ CSLA.NET
     ∗ Solves data access & business logic problems
     ∗ Works with most .NET UI technologies, especially those
       leveraging databinding
     ∗ Not focused on specific UI pattern or technology
  ∗ Enterprise Library
     ∗ Addresses aspect oriented & generic problems
     ∗ Not associated with any UI pattern or technology
  ∗ Entity Framework
     ∗ Handles database exchanges
     ∗ Not associated with any UI pattern or technology
Architecture Considerations:
             Conclusion


∗ MVVM pattern facilitates XAML-based enterprise
  applications
  ∗ Supports commands & databinding
  ∗ Minimizes designer-developer friction
∗ Many toolkits exist supporting MVVM-XAML
  ∗ Offer expected “helpers”
  ∗ Require varying degrees of “buy-in”
Toolkit Demonstration:
               Overview


∗ Work thru a simple client information application with
  Silverlight (out of browser)
∗ Implement three iterations (as projects)
  ∗ 1st Iteration constructed as a basic non-MVVM
  ∗ 2nd Iteration converted to an MVVM to help handle
    additional requirements
  ∗ 3rd Iteration incorporate MVVM Light to fix a few
    architecture issues uncovered in 2nd Iteration
Toolkit Demonstration:
        Solution


  1st Iteration




                  2ND Iteration




  3rd Iteration
Toolkit Demonstration:
      Why MVVM Light Toolkit?


∗ Solves known issues
  ∗ Communications between controls
  ∗ Turning UI events into commands
∗ Avoids unnecessary features (for now), e.g.,
  ∗ Composition
  ∗ Navigation
∗ Reasonably documented and stable
Toolkit Demonstration:
     Sample Application 1st Iteration




∗ MainPage.xaml.cs communicates with two models
  (ClientInformation and ClientPreferences)
∗ Databinding not employed; properties programmatically
  manipulated
Toolkit Demonstration:
Sample Application Models




    2nd & 3rd Iteration
Toolkit Demonstration:
    Sample Application 2nd Iteration




∗ MainPage.xaml.cs indirectly communicates with three
  models (ClientInformation, ClientPreferences and
  ClientSale) via two ViewModel classes
∗ Databinding employed; UI events initiate data access
Toolkit Demonstration:
    Sample Application 3rd Iteration




∗ 2nd iteration + MVVM Light Toolkit
∗ Databinding and commands leveraged to allow all logic to
  live within the ViewModels
Toolkit Demonstration:
                 Recap


∗ 1st Iteration – architecture typical of many Windows
  Form-based applications
∗ 2nd Iteration – MVVM pattern applied with a few
  resulting “programming holes”
  ∗ Communications limited between controls
  ∗ Events to commands not fully supported
∗ 3rd Iteration – MVVM Light Toolkit addresses
  shortcomings from the 2nd Iteration
Toolkit Demonstration:
Some Other MVVM Light Features…


 ∗ Ability to dynamically load appropriate ViewModel
   classes (ServiceLocation)
 ∗ Designed to work well with Blend
 ∗ Developer Candy
   ∗ NuGet support
   ∗ Visual Studio templates
   ∗ C# snippets
∗Thanks for attending!
∗Any other questions?

More Related Content

What's hot

From mvc to viper
From mvc to viperFrom mvc to viper
From mvc to viper
Krzysztof Profic
 
Sexy Architecting. VIPER: MVP on steroids
Sexy Architecting. VIPER: MVP on steroidsSexy Architecting. VIPER: MVP on steroids
Sexy Architecting. VIPER: MVP on steroids
Dmytro Zaitsev
 
Vuex
VuexVuex
Spring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUGSpring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUG
Ted Pennings
 
KnockOutjs from Scratch
KnockOutjs from ScratchKnockOutjs from Scratch
KnockOutjs from ScratchUdaya Kumar
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
Pagepro
 
Wicket Intro
Wicket IntroWicket Intro
Wicket Intro
koppenolski
 
Vue.js
Vue.jsVue.js
Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC
Naresh Chintalcheru
 
Vue presentation
Vue presentationVue presentation
Vue presentation
Norbert Nader
 
Vue.js part1
Vue.js part1Vue.js part1
Vue.js part1
욱래 김
 
Rambler.iOS #5: Разбираем Massive View Controller
Rambler.iOS #5: Разбираем Massive View ControllerRambler.iOS #5: Разбираем Massive View Controller
Rambler.iOS #5: Разбираем Massive View Controller
RAMBLER&Co
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.js
Takuya Tejima
 
The AngularJS way
The AngularJS wayThe AngularJS way
The AngularJS way
Boyan Mihaylov
 
Spring 4 Web App
Spring 4 Web AppSpring 4 Web App
Spring 4 Web App
Rossen Stoyanchev
 
Vue business first
Vue business firstVue business first
Vue business first
Vitalii Ratyshnyi
 
Web components
Web componentsWeb components
Web components
Tudor Barbu
 
Vue js and Vue Material
Vue js and Vue MaterialVue js and Vue Material
Vue js and Vue Material
Eueung Mulyana
 

What's hot (20)

From mvc to viper
From mvc to viperFrom mvc to viper
From mvc to viper
 
Sexy Architecting. VIPER: MVP on steroids
Sexy Architecting. VIPER: MVP on steroidsSexy Architecting. VIPER: MVP on steroids
Sexy Architecting. VIPER: MVP on steroids
 
Vuex
VuexVuex
Vuex
 
Spring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUGSpring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUG
 
KnockOutjs from Scratch
KnockOutjs from ScratchKnockOutjs from Scratch
KnockOutjs from Scratch
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
Wicket Intro
Wicket IntroWicket Intro
Wicket Intro
 
Vue.js
Vue.jsVue.js
Vue.js
 
Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC
 
Vue presentation
Vue presentationVue presentation
Vue presentation
 
Vue.js part1
Vue.js part1Vue.js part1
Vue.js part1
 
Introduction to Angularjs
Introduction to AngularjsIntroduction to Angularjs
Introduction to Angularjs
 
Rambler.iOS #5: Разбираем Massive View Controller
Rambler.iOS #5: Разбираем Massive View ControllerRambler.iOS #5: Разбираем Massive View Controller
Rambler.iOS #5: Разбираем Massive View Controller
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.js
 
The AngularJS way
The AngularJS wayThe AngularJS way
The AngularJS way
 
Spring 4 Web App
Spring 4 Web AppSpring 4 Web App
Spring 4 Web App
 
Vue business first
Vue business firstVue business first
Vue business first
 
Web components
Web componentsWeb components
Web components
 
Vue js and Vue Material
Vue js and Vue MaterialVue js and Vue Material
Vue js and Vue Material
 

Viewers also liked

Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Igor Moochnick
 
Understanding The MVVM Pattern (TechDays Belgium)
Understanding The MVVM Pattern (TechDays Belgium)Understanding The MVVM Pattern (TechDays Belgium)
Understanding The MVVM Pattern (TechDays Belgium)
Laurent Bugnion
 
A Day In The Life Of A WPF/SL Integrator
A Day In The Life Of A WPF/SL IntegratorA Day In The Life Of A WPF/SL Integrator
A Day In The Life Of A WPF/SL Integrator
Laurent Bugnion
 
MVVM Light for UWP
MVVM Light for UWPMVVM Light for UWP
MVVM Light for UWP
Robert Iagar
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
Ahmed Emad
 
Pattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light ToolkitPattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light Toolkit
Jean-Baptiste Vigneron
 

Viewers also liked (6)

Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
 
Understanding The MVVM Pattern (TechDays Belgium)
Understanding The MVVM Pattern (TechDays Belgium)Understanding The MVVM Pattern (TechDays Belgium)
Understanding The MVVM Pattern (TechDays Belgium)
 
A Day In The Life Of A WPF/SL Integrator
A Day In The Life Of A WPF/SL IntegratorA Day In The Life Of A WPF/SL Integrator
A Day In The Life Of A WPF/SL Integrator
 
MVVM Light for UWP
MVVM Light for UWPMVVM Light for UWP
MVVM Light for UWP
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
Pattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light ToolkitPattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light Toolkit
 

Similar to MVVM Light Toolkit Works Great, Less Complicated

Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
vipin kumar
 
.NET Intro & Dependency Injection Workshop
.NET Intro & Dependency Injection Workshop.NET Intro & Dependency Injection Workshop
.NET Intro & Dependency Injection Workshop
Serhii Kokhan
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
Betclic Everest Group Tech Team
 
Intro to Microsoft.NET
Intro to Microsoft.NET Intro to Microsoft.NET
Intro to Microsoft.NET rchakra
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
Sirwan Afifi
 
Business Apps with the Universal Windows Platform
Business Apps with the Universal Windows PlatformBusiness Apps with the Universal Windows Platform
Business Apps with the Universal Windows Platform
Christian Nagel
 
Bn1001 demo ppt advance dot net
Bn1001 demo ppt advance dot netBn1001 demo ppt advance dot net
Bn1001 demo ppt advance dot net
conline training
 
Building Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) ApplicationBuilding Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) Application
ssusere19c741
 
Building Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) ApplicationBuilding Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) Application
ssusere19c741
 
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid ApplicationsA Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
ajithranabahu
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
WE-IT TUTORIALS
 
Web tier-framework-mvc
Web tier-framework-mvcWeb tier-framework-mvc
Web tier-framework-mvc
KashfUlHuda1
 
Mvc3 part1
Mvc3   part1Mvc3   part1
Mvc3 part1
Muhammad Younis
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
Lanate Drummond
 
Asp.net new
Asp.net newAsp.net new
Asp.net new
Ganesh Jaya
 
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud OrchestrationCloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify Community
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp EnGregory Renard
 

Similar to MVVM Light Toolkit Works Great, Less Complicated (20)

Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
.NET Intro & Dependency Injection Workshop
.NET Intro & Dependency Injection Workshop.NET Intro & Dependency Injection Workshop
.NET Intro & Dependency Injection Workshop
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Intro to Microsoft.NET
Intro to Microsoft.NET Intro to Microsoft.NET
Intro to Microsoft.NET
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
Business Apps with the Universal Windows Platform
Business Apps with the Universal Windows PlatformBusiness Apps with the Universal Windows Platform
Business Apps with the Universal Windows Platform
 
.net Framework
.net Framework.net Framework
.net Framework
 
Bn1001 demo ppt advance dot net
Bn1001 demo ppt advance dot netBn1001 demo ppt advance dot net
Bn1001 demo ppt advance dot net
 
Building Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) ApplicationBuilding Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) Application
 
Building Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) ApplicationBuilding Windows Presentation Foundation (WPF) Application
Building Windows Presentation Foundation (WPF) Application
 
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid ApplicationsA Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
A Domain Specific Language for Enterprise Grade Cloud-Mobile Hybrid Applications
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
 
Web tier-framework-mvc
Web tier-framework-mvcWeb tier-framework-mvc
Web tier-framework-mvc
 
MVC Framework
MVC FrameworkMVC Framework
MVC Framework
 
Mvc3 part1
Mvc3   part1Mvc3   part1
Mvc3 part1
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
 
Asp.net new
Asp.net newAsp.net new
Asp.net new
 
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud OrchestrationCloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp En
 
Visual studio.net
Visual studio.netVisual studio.net
Visual studio.net
 

Recently uploaded

The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
Jisc
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
Jisc
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
Celine George
 
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
Levi Shapiro
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBCSTRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
kimdan468
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
Vikramjit Singh
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
Delapenabediema
 
Marketing internship report file for MBA
Marketing internship report file for MBAMarketing internship report file for MBA
Marketing internship report file for MBA
gb193092
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
Atul Kumar Singh
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
vaibhavrinwa19
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
timhan337
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
DhatriParmar
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 

Recently uploaded (20)

The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
 
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBCSTRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
STRAND 3 HYGIENIC PRACTICES.pptx GRADE 7 CBC
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
 
Marketing internship report file for MBA
Marketing internship report file for MBAMarketing internship report file for MBA
Marketing internship report file for MBA
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 

MVVM Light Toolkit Works Great, Less Complicated

  • 1. MVVM Light Toolkit Works Great, Less Complicated Tom Fischer September 29, 2011
  • 2. Agenda ∗ Background ∗ Enterprise Applications ∗ XAML ∗ Ramifications ∗ Architecture Considerations ∗ Patterns ∗ Toolkits ∗ Toolkit Demonstration ∗ Sample Application ∗ Incorporating MVVM Light
  • 3. Background: Enterprise Application Definition ∗ Targets ∗ Any type of organization ∗ Any type of industry ∗ Not intended for consumers ∗ Function focused, such as, accounting, purchasing, sales, etc.
  • 6. Background: XAML Definition ∗ Declarative markup language for .NET API with XML nodes equating to CLR objects ∗ Features include ∗ Rich eventing support ∗ Declarative databinding ∗ Developer friendly conventions, such as, the content property equals the “inner xml” of many nodes
  • 8. Background: Ramifications ∗ Enterprise applications do not ruthlessly follow well trodden UI guidelines; business users know what they want ∗ XAML does not mirror ASP.NET or Windows Form technologies, blindly adhering to their patterns & practices may result in harder to build and maintain Silverlight/WPF applications
  • 9. Architecture Considerations: Options ∗ Patterns ∗ Toolkits ∗ Code Behind ∗ Caliburn Micro ∗ MVC ∗ Catel ∗ MVP ∗ MVVM Foundation ∗ MVVM ∗ MVVM Light Silverlight ∗ Simple MVVM ∗ Prism Note: The above lists are NOT exhaustive. Many other relevant patterns and toolkits exist.
  • 10. Architecture Considerations: The UI Pattern’s Pattern
  • 11. Architecture Considerations: UI Pattern Picking ∗ Theoretical considerations ∗ Not the same as most software patterns (maybe why some call them “frameworks”?) ∗ Technology dominates ∗ Practical considerations ∗ Application complexity and life span ∗ Development team’s abilities and interests ∗ Organizational resources and support
  • 12. Architecture Considerations: UI Patterns and Technology ∗ MVC (Model-View-Controller) ∗ Conceived when viewers offered very little support for a software developer writing presentation code ∗ Built with language and platform specific helpers ∗ MVP (Model-View-Presenter) ∗ 2nd generation MVC; facilitated testing ∗ Response to feature rich viewers ∗ MVVM (Model-View-ViewModel) ∗ 3rd generation MVC; reduced coder/designer friction ∗ Response to XAML
  • 13. Architecture Considerations: Toolkit Overview ∗ Plugs gap between technology and its use; maybe entitled “helper” code!? ∗ Considerations ∗ Fit (Simple as possible, but not simpler) ∗ How well does it plug the gap? ∗ Does it include more than required? ∗ Obsolescence susceptibility ∗ Handle newer, better technologies ∗ Ingest requirement/application changes
  • 14. Architecture Considerations: Prism Toolkit ∗ Overview ∗ Supports WPF and Silverlight ∗ Available on Microsoft Download Center ∗ V4 (11/2010) ∗ Supports MVVM many features, such as, ∗ Bootstrapper ∗ Dependency Injection (Unity & MEF) ∗ Composition (über) ∗ Event Aggregator ∗ Wiring Commands & Events
  • 15. Side Note: Prism It’s Complicated, Documented & Supported
  • 16. Architecture Considerations: Caliburn Micro Toolkit ∗ Overview ∗ Supports WPF, Silverlight and Windows 7 ∗ Paired down version of Caliburn (10X smaller) ∗ Available on CodePlex ∗ V1.2 RTW (7/2011) ∗ 2,000+ downloads ∗ Supports MVVM and MVP with ∗ Bootstrapper ∗ Composition ∗ Event Aggregator ∗ Window Manager ∗ Wiring Commands & Events
  • 17. Architecture Considerations: MVVM Light Toolkit ∗ Overview ∗ Supports WPF, Silverlight and Windows 7 ∗ Available on CodePlex ∗ V3 SP1 (2/2011) ∗ 20,000+ downloads ∗ Supports MVVM with ∗ Event Aggregator ∗ Service Locator ∗ Wiring Commands & Events
  • 18. Side Note: What about CSLA.NET, Enterprise Library & Entity Framework? ∗ CSLA.NET ∗ Solves data access & business logic problems ∗ Works with most .NET UI technologies, especially those leveraging databinding ∗ Not focused on specific UI pattern or technology ∗ Enterprise Library ∗ Addresses aspect oriented & generic problems ∗ Not associated with any UI pattern or technology ∗ Entity Framework ∗ Handles database exchanges ∗ Not associated with any UI pattern or technology
  • 19. Architecture Considerations: Conclusion ∗ MVVM pattern facilitates XAML-based enterprise applications ∗ Supports commands & databinding ∗ Minimizes designer-developer friction ∗ Many toolkits exist supporting MVVM-XAML ∗ Offer expected “helpers” ∗ Require varying degrees of “buy-in”
  • 20. Toolkit Demonstration: Overview ∗ Work thru a simple client information application with Silverlight (out of browser) ∗ Implement three iterations (as projects) ∗ 1st Iteration constructed as a basic non-MVVM ∗ 2nd Iteration converted to an MVVM to help handle additional requirements ∗ 3rd Iteration incorporate MVVM Light to fix a few architecture issues uncovered in 2nd Iteration
  • 21. Toolkit Demonstration: Solution 1st Iteration 2ND Iteration 3rd Iteration
  • 22. Toolkit Demonstration: Why MVVM Light Toolkit? ∗ Solves known issues ∗ Communications between controls ∗ Turning UI events into commands ∗ Avoids unnecessary features (for now), e.g., ∗ Composition ∗ Navigation ∗ Reasonably documented and stable
  • 23. Toolkit Demonstration: Sample Application 1st Iteration ∗ MainPage.xaml.cs communicates with two models (ClientInformation and ClientPreferences) ∗ Databinding not employed; properties programmatically manipulated
  • 24. Toolkit Demonstration: Sample Application Models 2nd & 3rd Iteration
  • 25. Toolkit Demonstration: Sample Application 2nd Iteration ∗ MainPage.xaml.cs indirectly communicates with three models (ClientInformation, ClientPreferences and ClientSale) via two ViewModel classes ∗ Databinding employed; UI events initiate data access
  • 26. Toolkit Demonstration: Sample Application 3rd Iteration ∗ 2nd iteration + MVVM Light Toolkit ∗ Databinding and commands leveraged to allow all logic to live within the ViewModels
  • 27. Toolkit Demonstration: Recap ∗ 1st Iteration – architecture typical of many Windows Form-based applications ∗ 2nd Iteration – MVVM pattern applied with a few resulting “programming holes” ∗ Communications limited between controls ∗ Events to commands not fully supported ∗ 3rd Iteration – MVVM Light Toolkit addresses shortcomings from the 2nd Iteration
  • 28. Toolkit Demonstration: Some Other MVVM Light Features… ∗ Ability to dynamically load appropriate ViewModel classes (ServiceLocation) ∗ Designed to work well with Blend ∗ Developer Candy ∗ NuGet support ∗ Visual Studio templates ∗ C# snippets