Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Engineer Spock

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

Read more

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 respect your time. The course material is succinct, yet comprehensive. All important concepts are covered. Particularly important topics are covered in-depth. 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 for 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.

Keywords related to the course:

  • MVVM in WPF

  • MVVM tutorial

  • MVVM pattern

  • Model-View-ViewModel MVVM tutorial

  • Caliburn.Micro

  • View-First

  • ViewModel-First

Enroll now

What's inside

Syllabus

Understand the ideas behind the MVVM pattern.
How to Ask Questions
Join .NET Community of Students
Introduction
Read more

In this lecture we will address the problem of maintainability and testability of applications.

Why MVVM became a standard for developing WPF applications? We will answer to this question and briefly look at the historical background.

You will learn from which components MVVM consists of and what their responsibilities are.

What are Services and what is their role in the MVVM-based applications?

In this lecture you'll take a brief look at the simple educational application we will be working with throughout the course.

In this lecture you'll learn why monolithic design is the pure evil in most cases.

In this lecture you'll learn what to expect from learning and applying the MVVM pattern.

In this lecture we sum up the things we talked about in this module.

In this lecture we will outline the topics connected with the problem of marrying up Views and ViewModels in MVVM-based applications.

In this lecture you'll learn how to name the MVVM components: how to name Views and ViewModels.

In this lecture we will make some preliminary preparations before diving into the MVVM.

In this lecture you'll learn what approaches for connecting Views and ViewModels exist within the MVVM pattern.

In this lecture you'll learn what the View-First approach is in essence.

In this practical lecture you'll learn how to apply the View-First approach straightforwardly. It means we will look at how to create ViewModels in XAML and code-behind.

In this lecture you'll learn what the ViewModel-Locator pattern is. You'll see how to automatically connect ViewModels to Views.

In this lecture you'll briefly look at what the "Inversion of Control" is and what the bootstrapping means.

In this lecture you'll learn how to construct the Bootstrapper within the MVVM pattern and how to attach the IoC-container.

This lecture reveals the problem of validating the layout of data in the design-time (design-mode).

In this lecture you'll see how to create separate ViewModels suited specifically for loading the design-time data. After that you'll look at how to mix the runtime and design-time logic.

In this lecture you'll see the slick approach to instantiating ViewModels in order to inject into them design-time dependencies. This allows to avoid mixing the runtime and design-time logic as well as to avoid creation of any additional ViewModels.

We've detracted a little bit. So, in this lecture we get back to the main topic of this module: marrying up Views and ViewModels. In this lecture you'll learn another form of the ViewModel-Locator pattern when it poses itself as a container of ViewModels.

At last! We've reached the ViewModel-First approach. So, what it is?

In this lecture you'll learn how to apply the ViewModel-First approach in practice.

Let's wrap up all the things you've learned in this module.

We will outline to main topics of this module.

In this module you'll learn what commands in WPF are.

In this lecture you'll look at the reusable implementation of the ICommand interface.

In this lecture you'll look at how to apply the RelayCommand implementation in practice.

Commands system in WPF is not sufficient for building the full-fledged communication bridge between Views and ViewModels. Behaviors are for the rescue.

Learn how to develop and apply so-called "Attached Behaviors".

Blend Behaviors are more powerful than bear Attached Behaviors. Look at them in practice.

In this lecture you'll learn what is the "MessageBus" (EventAggregator) pattern in essence.

In this lecture you'll learn how to apply "MessageBus" (EventAggregator) in practice.

Let's wrap up the main topics of this module.

In this lecture we will outline the main topics of this module.

In this lecture we will talk about structuring solutions from the MVVM perspectives. Is it better to keep all the Views and ViewModels in a single project?

In this lecture I'll introduce you to the concept of UI-Composition.

Learn how to navigate to ViewModels which don't require parameters to be passed in via their constructors.

Learn how to navigate to ViewModels which require parameters to be passed in their constructors.

A little homework for students.

Introduction to the problem of opening dialogs.

In this lecture you'll see one of the approaches to opening dialogs in MVVM.

In this lecture you'll see how to apply the API we discussed in the previous lecture.

In this lecture you'll learn how to keep the reusable INPC implementation in the MVVM framework.

Learn why you may want to wrap a model in MVVM.

Learn the different between two different approaches to managing the state of data: Stateful ViewModel and Stateless ViewModel.

Learn how you can implement validation in WPF.

Learn how to implement and apply the INotifyDataErrorInfo interface for validation.

Do a little homework.

Wrap up the main topics of this module.

We will outline the main topics of this module.

In this lecture you'll learn what modern popular MVVM frameworks exist.

In this lecture we will take a brief look at Prism and MVVM-Light.

In this lecture you'll be introduced to the Caliburn.Micro MVVM framework.

Learn how to use the Caliburn.Micro MVVM framework in practice.

Last recommendations and a bunch of helpful links.

Learn how to write unit tests for ViewModels using MSTest.

The outline of the section dedicated to Dependency Inversion Principle (DIP) and Dependency Injection (DI) where you'll learn the main definitions and concepts.

Learn what is Dependency Inversion Princple (DIP) in essence.

Learn the definition of a dependency.

Learn the difference between volatile dependencies and stable dependencies.

Learn what is "inversion of control" and "dependency injection".

Look at an example of DIP violation on practice.

Look at the refactoring process based on Dependency Injection (DI) that leads to a better design of the application.

Learn different Dependency Injection (DI) techniques such as Constructor Injection, Property Injection and Method Injection.

Learn about the architectural implications of dependency injection.

Learn about the common smells of Dependency Inversion Principle (DIP) violation.

A conclusion of the section dedicated to Dependency Inversion Principle (DIP) and Dependency Injection (DI). Recap what you learned.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Provides a deep understanding of the MVVM pattern, which is essential for developing robust and maintainable WPF applications in enterprise environments
Assumes a solid C# background and familiarity with WPF, so beginners should ensure they meet these prerequisites before enrolling
Covers advanced topics such as IoC containers (Castle.Windsor), commands, attached behaviors, and message bus, which are useful for experienced developers
Explores MVVM frameworks like Caliburn.Micro, giving developers insights into how these frameworks work under the hood and how to leverage them effectively
Omits topics such as setting up a full-fledged data access layer, which may be important for some students but are not directly connected with MVVM
Includes unit testing of ViewModels, which is a crucial skill for ensuring the quality and reliability of MVVM-based applications

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Deep mvvm in wpf with practice

According to learners, this course offers a deep and pragmatic understanding of the MVVM pattern in WPF. Many appreciate the succinct yet comprehensive approach that moves from solid theoretical foundations to extensive practical application. Students highlight the value of the hands-on exercises, including building a small framework, which reinforces learning on key topics like navigation, commands, behaviors, and IoC containers. While the course is largely seen as beneficial for professional development, prospective students should note the explicit requirement for solid C# and WPF prerequisites, as true beginners might find the pace challenging. It is noted that certain related topics, like data access layer setup, are intentionally omitted to maintain focus.
Direct, no-fluff lectures.
"The lectures are straight to the point and efficiently deliver the information."
"Instructor respects your time; the material is dense but presented clearly."
"I liked that there wasn't any unnecessary rambling, just core content."
Provides a deep understanding of core MVVM concepts.
"It really helped me understand the core concepts behind MVVM, not just how to use a framework."
"The initial theoretical modules set a solid foundation before diving into code."
"I appreciate how the course explains the 'why' before the 'how' of MVVM."
Key areas like commands, navigation, IoC are covered.
"The sections on commands, behaviors, and IoC containers were particularly insightful."
"Navigation strategies, including passing parameters, were clearly explained and demonstrated."
"I finally understand how to properly integrate an IoC container into my MVVM applications."
Plenty of hands-on examples and coding.
"The amount of practical exercises really solidifies the learning and makes it stick."
"Building the small framework alongside was very helpful for understanding how they work."
"I could immediately apply what I learned to my real-world WPF projects."
Doesn't cover data access layer integration.
"It would have been helpful to see how to integrate data access patterns with MVVM."
"Note that this course focuses strictly on MVVM patterns, not the full application stack like databases."
"While stated, the lack of data layer examples felt like a missing piece for practical apps."
Assumes solid C# and WPF knowledge.
"Make sure you have a strong grasp of C# and WPF basics before starting this course."
"This is definitely aimed at intermediate developers; true beginners in WPF will struggle."
"I found some parts challenging because my WPF knowledge wasn't as strong as it needed to be."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in MVVM in WPF Survival Guide From A to Z with these activities:
Review C# Fundamentals
Solidify your understanding of C# fundamentals to ensure a smooth learning experience with MVVM in WPF. A strong C# foundation is essential for understanding the code examples and implementing MVVM patterns effectively.
Show steps
  • Review data types, variables, and operators.
  • Practice writing methods and classes.
  • Study inheritance and polymorphism concepts.
Brush Up on WPF Basics
Revisit WPF basics to prepare for the course. Familiarity with WPF concepts like XAML, data binding, and controls will make learning MVVM much easier.
Show steps
  • Review XAML syntax and layout panels.
  • Practice data binding and commanding.
  • Explore common WPF controls and their properties.
Read 'Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4'
Gain a deeper understanding of WPF by reading a comprehensive book on the subject. This will provide a solid foundation for understanding how MVVM interacts with WPF.
Show steps
  • Read chapters on data binding and commanding.
  • Study the sections on controls and layout.
  • Review advanced topics like styling and templating.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement a Simple WPF App with MVVM
Apply your knowledge by building a small WPF application using the MVVM pattern. This hands-on experience will solidify your understanding of the concepts covered in the course.
Show steps
  • Design a simple UI with data binding.
  • Create ViewModels to manage the UI data and logic.
  • Implement commands to handle user interactions.
  • Connect Views and ViewModels using data binding.
Write a Blog Post on MVVM Concepts
Reinforce your learning by explaining MVVM concepts in your own words. Writing a blog post will help you clarify your understanding and identify any gaps in your knowledge.
Show steps
  • Choose a specific MVVM topic to focus on.
  • Research the topic and gather relevant information.
  • Write a clear and concise explanation of the concept.
  • Include code examples to illustrate the concept.
Participate in a Peer Study Group
Collaborate with other students to discuss MVVM concepts and solve problems together. Peer learning can provide valuable insights and help you understand different perspectives.
Show steps
  • Schedule regular study sessions with peers.
  • Prepare discussion topics and questions in advance.
  • Share your knowledge and learn from others.
  • Work together on coding exercises and projects.
Contribute to an Open Source MVVM Project
Gain real-world experience by contributing to an open-source project that uses the MVVM pattern. This will expose you to different coding styles and project management practices.
Show steps
  • Find an open-source MVVM project on GitHub.
  • Review the project's documentation and code.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete MVVM in WPF Survival Guide From A to Z will develop knowledge and skills that may be useful to these careers:
WPF Developer
A WPF Developer builds applications with a graphical user interface using the WPF framework. This course, focused on the MVVM architectural pattern within WPF, directly addresses the core skills needed for this role. WPF Developers often work on enterprise level applications, where MVVM is a standard. The course's detailed exploration of connecting Views and ViewModels, navigation, and the use of IoC containers provides a strong foundation for developing robust, maintainable WPF applications. This course may be very helpful for those who want to become a WPF Developer.
UI Developer
UI Developers specialize in creating user interfaces for software applications. This course is very helpful for those who want to become UI developers. The course focuses on MVVM, which is the most popular architectural pattern, and helps create well designed UIs using WPF. Topics such as connecting Views and ViewModels, design-time data support, and UI composition through regions all contribute to creating effective and user-friendly interfaces. This course may be very useful for UI Developers who want to leverage the MVVM pattern.
Software Architect
Software Architects are responsible for the high-level design of software systems. This course helps you understand the MVVM architectural pattern deeply, which is crucial for designing WPF applications. The course covers essential topics like connecting Views and ViewModels, dependency injection, and navigation, all of which are relevant to architectural decisions. The course may be very helpful for Software Architects who need to design WPF-based systems.
Desktop Application Developer
Desktop Application Developers specialize in creating applications that run on desktop operating systems. This course provides the skills needed to build professional WPF desktop applications using the MVVM pattern. The course may be very helpful for developers of WPF and desktop applications, with its focus on connecting Views and ViewModels, implementing commands, and handling navigation. The practical, hands-on approach to learning MVVM makes this course a valuable resource for desktop application development.
Application Developer
Application Developers create software applications for various platforms. This course may be very helpful if you want to learn how to build well structured WPF applications using the MVVM pattern. The course covers topics such as connecting Views and ViewModels, implementing commands and behaviors, and handling navigation. The course's practical approach ensures you gain hands-on experience in applying MVVM principles to real-world application development. Acquaintance with the MVVM pattern may be required.
Software Engineer
Software Engineers design, develop, and test software systems. The course covers the MVVM architectural pattern, which is widely used in WPF application development. By learning how to connect Views and ViewModels, implement commands and behaviors, and handle navigation, you gain practical skills in building robust and maintainable WPF applications. Software Engineers often need to understand architectural patterns like MVVM to create scalable and well-organized software. Therefore this course may be very helpful.
Senior Software Engineer
Senior Software Engineers require knowledge of architectural patterns. This course may provide those who want to become senior software engineers with a deeper understanding of the MVVM architectural pattern, which is widely used in WPF application development. By learning how to connect Views and ViewModels, implement commands and behaviors, and handle navigation, you gain practical skills in building robust and maintainable WPF applications. Senior Software Engineers often need to understand architectural patterns like MVVM to create scalable and well-organized software. Therefore this course may be very helpful.
C# Developer
C# Developers write code using the C# programming language. This course provides practical knowledge of how to apply the MVVM pattern in WPF using C#. Knowledge of C# is an essential prerequisite for this course. C# Developers who want to specialize in WPF application development will find the course on connecting Views and ViewModels, dependency injection, and unit testing of ViewModels is especially valuable. Therefore this course may be very helpful.
Software Developer
Software Developers design, develop, and test software applications. This course may be helpful to developers of WPF applications, with a deep dive into the MVVM architectural pattern, a standard for WPF apps. The course provides essential knowledge of connecting Views and ViewModels, implementing commands and behaviors, and handling navigation. The combination of theoretical foundations and practical exercises makes this course a valuable resource for software developers.
Technical Lead
A Technical Lead guides a team of developers, making key technical decisions. This course is all about the MVVM architectural pattern. Knowledge of MVVM is essential for WPF application development and this course may increase the skills needed to develop robust and maintainable WPF applications. Leads need to understand architectural patterns like MVVM to ensure the team follows best practices. The course provides the technical depth needed to guide a team effectively, covering topics such as dependency injection, UI composition, and unit testing of ViewModels. Therefore this course may be helpful.
Software Consultant
Software Consultants advise organizations on how to effectively use software technologies. Software Consultants use MVVM architectural patterns to create scalable and well-organized software. This course may provide those who want to become software consultants with a deeper understanding of the MVVM architectural pattern, which is widely used in WPF application development. By learning how to connect Views and ViewModels, implement commands and behaviors, and handle navigation, you gain practical skills in building robust and maintainable WPF applications. Therefore this course may be very helpful.
Solutions Architect
Solutions Architects design and implement comprehensive technology solutions. They often work with the MVVM architectural pattern in WPF to create scalable and maintainable user interfaces. This course helps those who want to become solutions architects gain expertise in WPF application development. The course covers topics like connecting Views and ViewModels, design-time data support, and UI composition. Therefore this course may be of some help to solutions architects.
Technical Trainer
Technical Trainers teach technical skills to others. This course may be very useful, as it gives a deep understanding of the MVVM pattern in WPF that helps with teaching the MVVM pattern to others. The comprehensive coverage of topics such as connecting Views and ViewModels, dependency injection, and unit testing of ViewModels provides a solid foundation for creating effective training materials. The course's emphasis on practical application and real-world examples makes it easier for the technical trainer to convey complex concepts.
Full-Stack Developer
Full Stack Developers work on both the front-end and back-end of software applications. This course is about best practices and architectural patterns. The course helps those who want to become full stack developers by improving the skills and knowledge for developing the front end of software applications, especially user interfaces. The comprehensive coverage of topics such as connecting Views and ViewModels, design time data support, and UI composition helps create scalable and maintainable applications. Therefore this course could be helpful.
Database Administrator
Database Administrators (DBAs) manage and maintain database systems. This course may be of some use to those DBA's who also want to become WPF Developers. The course's focus is the MVVM architectural pattern, which is crucial to creating user interfaces using the WPF framework. The course might provide some information that is also used by Database Administrators.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in MVVM in WPF Survival Guide From A to Z.
Provides a comprehensive guide to WPF, covering everything from basic concepts to advanced techniques. It is particularly useful for understanding the underlying mechanisms of WPF that MVVM builds upon. While not strictly about MVVM, it provides essential context and background knowledge. It valuable reference for understanding how WPF works under the hood.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser