Coolthing Of Theday

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, 7 February 2013

Intro to MVVM in four easy episodes....

Posted on 17:07 by Unknown

CodeProject - MVVM # Episode 1 (2, 3 & 4)

Introduction

MVVM seems, to me, to be the best way to develop applications that are both flexible - allowing changes to the GUI without complex rewrites, and allowing testing of the client logic without needing to resort to complex macros.

In this series of articles, I will present a small application in WPF, using an enhanced MVV pattern that I'm calling MVVM#.

So, what's different about my implementation? The main things are:

  • Message Tracking: When a message is sent, we now know if it has been handled.
  • Cancellable messages: A ViewModel can stop the message being sent further down the chain.
  • Easy Peasy Modal Dialog windows
  • No 'Main window': Everything is a View.
  • Use of a Controller: The Controller controls the application.
  • Easy to use Design Time Data for 'Blendability'
  • Use of ViewData for binding data to a View, as well as a ViewModel to bind behaviour to a view.

In this article, I introduce the topics, and ideas, and explain some of the differences.

In the second article, I'll show the way I set up any project using MVVM#, creating the base classes ready to begin the application specific development.

In the third article, I'll add sufficient meat to the bones created in article 2 to give us a running application, albeit one that doesn't do too much.

In the fourth article, I'll finish off the application to show a (small) but functioning application demonstrating some of the functions available.

Background

I've been looking at MVVM for a while now, without the opportunity to develop real applications using the pattern. I've downloaded and looked at most of the various frameworks, and even understood a few! But I don't like using a framework when I am learning something new - I want to understand the subject from the ground up. So I started playing, developing my own application using MVVM, and re-engineering to surmount the many obstacles I encountered.

In this article, I will describe some of the thought processes that drove me to extend the MVVM pattern, and introduce that pattern.

In the next article in this series, I will walk through developing an application from scratch, in VS2010 using C#, to implement this pattern.

Points of Interest

Man! It's a minefield out there!

There are so many articles, written by the extremely knowledgeable through to the novices, and it is really hard to sort the wheat from the chaff. Debts are due to the WPF Disciples in general, Josh and Marlon in particular, and especially Pete Hanlon who has responded to my often cryptic questions on CodeProject with never a groan! Thanks also go to any of the many people out there in etherland who have helped me, knowingly or not, to develop this series. Isn't it amazing how much free help there is out there? Hopefully, this series will help me give a little back.

..."

If you're trying to wrap your head around MVVM, this article series might help a bit. It's one mans implementation of MVVM, but it sounds like he's "been there, done that" and the article reflects some real world lessons learned. The thing with MVVM is that there seems to be about a billion ways to do it, and until there's an official implementation/guidance in the box,. there's going to continue to be. And while that's kind of neat, it's also a major pain in the butt when you're trying to get up speed on it ...

Anyway, this series provides one of the billion ways. And if this works for you, then you can ignore the other 999,999,999 for now... :)

Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in Development, MVVM, WPF | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Mr. 7,000! This is my 7,000th post...
    Before this post; After; 20 visits between taking these snaps? Oh wait, that's probably me searching for past related posts....
  • Rad Gate Post... Get your Red Gate Post here...
    simple talk - Melanie Townsend - Get a copy of the Red Gate Post We recently put together a newspaper of some of the best articles fr...
  • "Windows Server Essentials Media Pack" (DNLA Stream, HTML5 and Dashboard Media stuff)
    Microsoft Downloads - Windows Server Essentials Media Pack This pack enables the media streaming functionality for Windows Server 2012...
  • Windows Management Framework 4.0 (PowerShell 4, PowerShell ISE, Management OData, WMI, etc.) now available
    Keith Hill's Blog - PowerShell 4.0 Now Available You can get PowerShell 4.0 for down level operating systems now via the WMF 4.0 d...
  • Viasfora - Your new favorite Visual Studio Text/*ML Editing Extension?
    Winterdom - Introducing Viasfora A couple of days ago, I unveiled Viasfora , my latest attempt at building a decently packaged extensi...
  • "Windows Server [2012 R2]: The Best Infrastructure to Run Linux Workloads"
    In the Cloud - What’s New in 2012 R2: Enabling Open Source Software Part 4 of a 9-part series . ... There are a lot of great s...
  • [Hardware Review] It's been a Haswell Summer... Haswell/Harris Beach Intel SDS Ultrabook Review - Part 3
    Are you all tired of it yet? Have you heard it often enough already? Well too bad! Haswell is Battery Love! MUHAHAhahahahaha.... There! ...
  • [Hardware Review] Life with Haswell... Haswell/Harris Beach Intel SDS Ultrabook Review - Part 2
    "So Greg, how's life with Haswell been?" "Pretty Sweet! (Mostly)" I've been given an opportunity to review t...
  • Want the world's best Science Fiction And Fantasy Library? Come to LA... The Eaton Collection @ UC Riverside
    CBS Los Angeles - The Eaton Collection: The Best Science Fiction And Fantasy Library Science fiction and fantasy fans rejoice and take...
  • Caliburn.Micro v1.5.0 released (CM gets Tasks, Async/Await and Share/Setting for RT... and bug fixes of course)
    Caliburn.Micro - Caliburn.Micro v1.5.0 "Release Notes This release fixes many bugs. It also adds support for Task and async/a...

Categories

  • .Net
  • 3DPrinting
  • AFeedYouShouldRead
  • Agile
  • ALM
  • Amazon
  • Amiga
  • Analytics
  • Android
  • ASP.NET
  • Azure
  • BigData
  • bing
  • Blogging
  • Book
  • BookReview
  • BUILD
  • C
  • C#
  • C++
  • Career
  • Cat
  • cheatsheet
  • ClickOnce
  • Cloud
  • ComputerHardware
  • css
  • Data
  • DBA
  • DependencyInjection
  • Deployment
  • Design
  • Development
  • devops
  • DVCS
  • ebook
  • EDD
  • Education
  • EnterpriseLibrary
  • EntityFramework
  • Exchange
  • Expression
  • gadget
  • Game
  • GIT
  • Google
  • Government
  • Hadoop
  • hardware
  • HardwareReview
  • HaswellReview
  • HTML5
  • Humor
  • IE
  • IEExtension
  • IfAllElseFails
  • IIS
  • ILMerge
  • Image
  • Infographic
  • interview
  • InversionOfControl
  • Java
  • Javascript
  • Kinect
  • LightSwitch
  • LINQ
  • Linux
  • LosAngeles
  • Lucene
  • Lync
  • MEF
  • Metro
  • MicrosoftOffice
  • MicrosoftOutlook
  • Mono
  • MVC
  • MVVM
  • NetMon
  • NLP
  • NoSQL
  • NuGet
  • OData
  • OneNote
  • OpenXML
  • Paint.Net
  • Personal
  • Photosynth
  • Physics
  • portable
  • Poster
  • PowerShell
  • Preparedness
  • Presentation
  • Prism
  • PrivateCloud
  • RegEx
  • RemoteDesktop
  • Reporting
  • RIAServices
  • Science
  • ScienceFiction
  • Scratch
  • Scrum
  • ServiceBus
  • SharePoint
  • Silverlight
  • SimiValley
  • SPA
  • Space
  • SQLServer
  • Storyboard
  • Surface
  • SVG
  • SystemAdministration
  • T4
  • TeamBuild
  • TeamFoundationServer
  • TechEd
  • Training
  • TypeScript
  • UnitTesting
  • UnityApplicationBlock
  • Utility
  • Veteran
  • VirtualMachine
  • Visio
  • VisualBasic
  • VisualStudio
  • WCF
  • Web X.X
  • Webcast
  • WebFeed
  • WebMatrix
  • Windows
  • Windows7
  • Windows8
  • Windows8.1
  • WindowsHomeServer
  • WindowsLiveWriter
  • WindowsPhone
  • WindowsServer
  • WinRT
  • WiX
  • WMI
  • WOPI
  • WPF
  • XAML
  • XBox360
  • XboxOne
  • zombie

Blog Archive

  • ▼  2013 (500)
    • ►  December (12)
    • ►  November (61)
    • ►  October (65)
    • ►  September (38)
    • ►  August (47)
    • ►  July (75)
    • ►  June (39)
    • ►  May (40)
    • ►  April (42)
    • ►  March (39)
    • ▼  February (42)
      • How Microsoft and others, empowers you with PowerS...
      • Awake Await, Async Asink... Think before you async...
      • Shaping up Office 2013 with these 300 Visio icon s...
      • Today's LINQPad fun, SelectExcept! (a tip on selec...
      • Helping a sick system get better... Five Windows A...
      • Helping you Hadoop with "Hadoop illuminated" the f...
      • Robert continues to guide us in the right directio...
      • IE10 RTW now available for Windows 7 and Windows S...
      • LINQToWiki (yes, even Wikipedia)
      • Sacha say IOC you! Sacha Barber presents his Barba...
      • Robert's "One Stop VS Update Shop" guide to all th...
      • Windows 8 + Kona + Steve = Itinerary Hunter
      • ClickOnce, Windows 8 and SmartScreen (If you're us...
      • Wak-A-PST with Microsoft Exchange PST Capture 2.0
      • Excel with Excel without Excel... Seven Excel/XLS ...
      • The All-In-One Framework goes Metro... errr... umm...
      • Modernize your WPF app's with the Modern UI for WP...
      • The Expression death march continues... Expression...
      • Kevin's Tips To Technology Presentation Perfection...
      • The HTML5 Quick Start For Greg's (err... Dummies.....
      • Find your inner App Hero with these two new Window...
      • It's a Rap! The Surface Pro Rap, that is...
      • Microsoft Message Analyzer better in Beta 2 (Gantt...
      • Note to Los Angeles Metro (aka subway) riders: Don...
      • Adobe Photoshop Source Now Available! (For the 199...
      • Microsoft SQL Server Licensing Question? There's a...
      • Wiki-wiki, here's some popular PowerShell add-ons...
      • Table Per Type(TPH) Inheritance in Entity Framewor...
      • Gaming up a story with the PowerPoint Game Design ...
      • Glima!... Gilma v3 is a .Net 4.0 update...
      • "Official" Surface Getting Started Guide (free 68 ...
      • You've heard of ASCII Art? How about DNS Art!?
      • Adding a 4th row of Windows 8 Start Screen tiles t...
      • O'la! As in Ola Hallengren's SQL Server Backup, In...
      • One download of wonderful [Samples] for Windows 8....
      • Composing Maintainable XAML Apps, the nearly two h...
      • Unit Test Stored Procedures? Here's one example...
      • Intro to MVVM in four easy episodes....
      • Learn how to learn, creatively with the free MIT L...
      • Microsoft TechEd North America 2013, New Orleans, ...
      • How portable is your assembly? Check it with the P...
      • Removing the SkyDrive Pro Explorer Context Menu it...
Powered by Blogger.

About Me

Unknown
View my complete profile