This course introduces WPF developers to the MVVM design pattern and teaches them how to apply it to a wide range of compositional scenarios for building out WPF client applications. The course covers the motivations for using the pattern, the fundamental concepts of the pattern, and then demonstrates how to apply it for a number of common scenarios. It covers various different ways of defining Views, ViewModels, and attaching to one another. It shows how to use common data bound controls in the context of MVVM and how to hook them to ViewModels and Models, both statically and dynamically. It shows how to communicate between View and ViewModel with data binding, commands, and behaviors. Finally, it shows how to use View and ViewModel hierarchies and set up navigation between Views within a container.