What Will I Learn?

✓ Logically and physically structuring WPF applications according to MVVM pattern

✓ Apply either View-First or ViewModel-First approach

✓ Set up Design-Time Data

✓ Build a communication bridge between Views and ViewModels

✓ Correctly apply a static message bus

✓ Organize navigation

✓ Validate Models

✓ Logically and physically structuring WPF applications according to MVVM pattern

✓ Build your own MVVM framework

View Curriculum

Available Licences

Personal: watch online on
Download: watch on any device.

Personal – 10.99$
Download – 14.99$


  • Solid experience in C#
  • You should already have decent C# and a little bit of WPF experience


MVVM (stands for Model-View-ViewModel) is a well-known architectural pattern in the world of WPF. Most enterprise level WPF applications are MVVM-based.

Learn deeply the concepts lying behind the MVVM pattern in order to understand what MVVM is in essence and how to pragmatically apply it to a WPF application. This is a great MVVM tutorial for beginners (beginners in MVVM, don’t forget to look at prerequisites)!

Teaching Approach

No fluff, no ranting, no beating the air. I esteem your time. The course material is succinct, yet comprehensive. All important concepts are covered. Particularly important topics are covered in-depth. For absolute beginners, I offer my help on Skype absolutely free if requested. Don’t forget that this course has English subtitles, so if you don’t understand my accent, feel free to turn them on.

Take this course and you will be satisfied.

Build a strong foundation in applying MVVM with this course

In the case you’re just familiar with the WPF framework, learning this course will give you a level-up since you’ll be capable of developing professional WPF applications. Applying MVVM intelligently is a “must have” skill for WPF developers.

If you are an experienced WPF developer, you might be interested in how MVVM frameworks may work under the hood. Throughout the course, we will be building a small MVVM framework similar to Caliburn.Micro.

Content and Overview

This course is primarily aimed at intermediate developers. Experts may also find interesting MVVM tricks provided in this course. If you are a beginner, be sure you’re ready to take this course, since it requires from you a solid C#-background and acquaintance with WPF.

This course provides solid theoretical base reinforced by tons of practical material. This course is very practical (except the very first introductory module).

“MVVM in WPF” is a very wide topic and it’s hardly possible to cover all the related challenges arising while applying MVVM. That’s why this course includes the most important topics understanding of which is a key to successful development. We will sacrifice some topics which may be interesting for students, but which are hardly connected with MVVM directly. What I’m talking about is, for example, the problem of setting up a full-fledged data access layer. Such topics are omitted.

The most beneficial aspect of this course is that it gives you the deep understanding of the MVVM pattern. For example, you’ll see how to pass parameters to ViewModels through constructors, without using a static message bus, or passing parameters by explicitly setting properties of a ViewModel.

In short, the course covers the following topics:

  • MVVM background: what is MVVM, why to use it, when to use MVVM etc.
  • Connecting Views and ViewModels: View-First and ViewModel-First approaches
  • Design-Time data support
  • Configuring and using an IoC-container (by the example of Castle.Windsor
  • Communication channel between Views and ViewModels: commands, attached and blend behaviors, static message bus (EventAggregator)
  • Navigation: hierarchical UI composition, how to open dialogs, including modal dialogs, navigating to parameterized ViewModels (pass parameters into their constructors)
  • Models and validation
  • MVVM toolkits: Caliburn.Micro more closely
  • Unit-Testing of ViewModels

In the end, we will recap what you have learned and you will try to understand where you have to go further with the intention to master your skills. Here we will have a discussion of different paths you can go on.

How long is this course: The course is around 2.5 hours. All are video lectures. You will be able to download all the slides and code samples used in the course.


Keywords related to the course:

  • MVVM in WPF
  • MVVM tutorial
  • MVVM pattern
  • Model-View-ViewModel MVVM tutorial
  • Caliburn.Micro
  • View-First
  • ViewModel-First

Who is the target audience?

  • Intermediate developers who want to learn MVVM 
  • Experts who applied MVVM, but lack the deep understanding of it
  • It is not for beginners with the lack of C# experience or no WPF experience


  • Applications Maintaining
  • Why MVVM
  • MVVM in a Nutshell
  • Services in MVVM
  • Educational App Overview
  • Monolithic Design
  • Downsides of MVVM
  • Conclusion
  • Naming Conventions
  • Preparing Solution
  • View vs View First
  • View First Approach
  • View First-Straight Forward
  • View First-Autowire
  • Boot And IoC-Intro
  • Boot And IoC-Demo
  • Design Time-Intro
  • Design Time-Demo-Separate
  • Design Time-Demo-Clean
  • View-First Demo-Explicit
  • VM-First-Intro
  • VM-First-Demo
  • Conclusion
  • Commands in WPF
  • Relay Command
  • Commands In Practice
  • Behaviors Intro
  • Attached Behaviors In Practice
  • Blend Behaviors In Practice
  • Message Bus. Intro
  • Message Bus. Demo
  • Conclusion
  • Locating MVVM Components
  • UI-Composition
  • Navigation without Parameters
  • Navigation with Parameters
  • Homework – Navigation without MessageBus
  • Dialogs. Intro
  • Dialogs API Demo
  • Applying Dialogs API
  • Making INotifyPropertyChanged Less Painful
  • Conclusion
  • Models Wrapping
  • Stateful ViewModel vs Stateless ViewModel
  • Validation. Intro
  • Validation. Demo 1
  • Validation. Demo 2
  • Conclusion
  • MVVM Frameworks
  • Prism and MVVM-Light
  • Caliburn. Intro
  • Caliburn. Demo
  • Conclusion
  • Final Words
  • Outline
  • Definition of DIP
  • Dependencies
  • Volatile and Stable Dependencies
  • Definitions of IoC and DI
  • DIP Violation Demo
  • Refactoring to a Better Design Applying Dependency Injection
  • Dependency Injection Techniques
  • Architectural Implications
  • Common Smells of DIP Violation
  • Conclusion
  • Outline
  • Pure DI and IoC-Containers
  • Building a Simple IoC-Container
  • Service Locator Design Pattern
  • Conclusion