We may earn an affiliate commission when you visit our partners.
Michael Perry

This course demonstrates how to create clean, declarative view models that don't explicitly raise property changed events or use a message bus.

A view model should read like a user interface specification. Most view models, however, are too busy raising property changed events or sending and subscribing to a message bus. This course will give you the tools and patterns you need to write clean, declarative code for WPF, Windows Phone, and Windows Store clients. A clean view model does one thing, and one thing only; the open source Assisticant library will handle the rest.

This course is no longer available. Find something similar by browsing:
Clean Code Assisticant WPF Windows Phone Windows Store UI Design Declarative Programming

What's inside

Syllabus

Cleanliness
Assisticant Basics
Collections
Piercing the Wrapper
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Develops advanced skills for WPF, Phone, and Store clients
Leverages the open source Assisticant library
Taught by Michael Perry, who is recognized for their work in designing clean UIs
Beginner friendly, with a strong focus on building clean ViewModel code

Save this course

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

Reviews summary

Streamlining mvvm with assisticant

According to learners, this course is highly effective for developers seeking to create clean, declarative view models and eliminate MVVM boilerplate, particularly `INotifyPropertyChanged`. Students appreciate how the course leverages the Assisticant library to achieve a simplified, reactive UI development workflow for WPF and Windows Store clients. While many find the explanations clear and examples practical, some note that the course assumes prior knowledge of MVVM or reactive programming, making it less suitable for absolute beginners. A few recent reviews mention that some platform-specific examples feel dated, though the core principles remain relevant. Overall, it's considered a valuable resource for streamlining MVVM.
Provides clear explanations and practical examples.
"The explanations are clear, and the examples are practical, making the concepts easy to grasp."
"The 'Dependency Tracking' module really tied everything together and solidified my understanding."
"The 'Piercing the Wrapper' section was particularly enlightening, offering an elegant solution to complex problems."
Leverages the Assisticant library effectively.
"The Assisticant library is a game-changer for reactive UI, making common boilerplate disappear."
"This course provides an excellent deep dive into Assisticant for achieving cleaner MVVM."
"I found that Assisticant handles the complexities, allowing me to focus on writing clean, declarative code."
Achieves highly declarative and clean UI code.
"This course really delivers on its promise of clean view models. I've struggled with boilerplate `INotifyPropertyChanged` code for years, and Assisticant just makes it disappear."
"Absolutely brilliant! My approach to WPF development completely changed, simplifying view models without the usual boilerplate."
"I learned how to avoid `INotifyPropertyChanged` boilerplate effectively, leading to much cleaner code."
Could benefit from more coverage of complex use cases.
"I wish there were more advanced scenarios covered, perhaps integrating with different data sources or complex async operations."
"The examples were basic, and I didn't feel it provided enough practical application for real-world projects."
Some platform-specific examples feel dated.
"The Windows Phone examples feel a bit dated now, which is a minor point but noticeable."
"While the core principles are evergreen, some of the platform-specific examples (Windows Phone) feel a bit legacy now."
May require prior knowledge of MVVM or reactive.
"The course sometimes assumes a bit too much prior knowledge of reactive programming concepts, which made it a little challenging for me initially."
"It's good, but I wouldn't recommend it for complete beginners to MVVM or reactive programming."
"I found this course somewhat confusing and felt I needed to dig into the library's documentation outside the course to keep up."

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 Clean View Models With Assisticant with these activities:
Brush Up on Property Changed Events
Review property changed events to solidify your understanding of how data changes are communicated in WPF.
Show steps
  • Refer to course materials or online resources on property changed events.
  • Create a simple WPF application to practice raising and handling property changed events.
  • Test and debug your code to ensure proper event handling.
Follow-Along Tutorial: Master WPF View Models
Practice creating clean view models in WPF by following a step-by-step tutorial.
Browse courses on WPF
Show steps
  • Find a beginner-friendly tutorial on WPF view models.
  • Set up a development environment with WPF.
  • Follow the tutorial to create a basic view model.
  • Experiment with different binding techniques and commands.
Design a Sample Mobile App View Model
Apply your knowledge of view models by designing and creating a sample view model for a mobile app.
Browse courses on Mobile App Development
Show steps
  • Choose a simple mobile app idea.
  • Sketch out the UI design.
  • Design the view model, defining data structures and commands.
  • Share your design with others for feedback.
Three other activities
Expand to see all activities and additional details
Show all six activities
Peer Group Code Review: View Model Design
Enhance your view model design skills by receiving constructive feedback from your peers.
Browse courses on Code Review
Show steps
  • Find a study partner or join a study group.
  • Share your view model code with your peers.
  • Provide feedback on each other's code, focusing on clarity, maintainability, and performance.
  • Apply the feedback to improve your own view model design.
Code Challenges: Building View Models with Assisticant
Strengthen your understanding of Assisticant and view model design patterns through targeted coding exercises.
Show steps
  • Register for an online coding platform or find code challenges.
  • Solve coding exercises specifically focused on view model implementation using Assisticant.
  • Analyze different approaches and solutions.
Develop a WPF Application with Testable View Models
Demonstrate your ability to implement testable and maintainable view models in a real-world WPF application.
Browse courses on Software Engineering
Show steps
  • Design the application architecture and define the view models.
  • Implement the view models with unit testing in mind.
  • Develop the WPF UI and bind it to the view models.
  • Write comprehensive unit tests for the view models.
  • Deploy the application and evaluate its performance.

Career center

Learners who complete Clean View Models With Assisticant will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers are responsible for designing, developing, and maintaining software systems. This course may be useful for aspiring Software Engineers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
Front-End Developer
Front-End Developers are responsible for designing and developing the user interface of websites and applications. This course may be useful for aspiring Front-End Developers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
Web Developer
Web Developers are responsible for designing, developing, and maintaining websites. This course may be useful for aspiring Web Developers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
Mobile App Developer
Mobile App Developers are responsible for designing, developing, and maintaining mobile applications. This course may be useful for aspiring Mobile App Developers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
UI/UX Designer
UI/UX Designers are responsible for designing the user interface of websites and applications. This course may be useful for aspiring UI/UX Designers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
UX Engineer
UX Engineers are responsible for designing, developing, and evaluating the user experience of websites and applications. This course may be useful for aspiring UX Engineers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing user interfaces that are easy to maintain and update.
Software Architect
Software Architects are responsible for designing and developing software systems. This course may be useful for aspiring Software Architects as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing software systems that are easy to maintain and update.
Data Analyst
Data Analysts are responsible for collecting, cleaning, and analyzing data. This course may be useful for aspiring Data Analysts as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing data pipelines that are easy to maintain and update.
Business Analyst
Business Analysts are responsible for understanding and analyzing business needs. This course may be useful for aspiring Business Analysts as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing business requirements that are easy to maintain and update.
Technical Writer
Technical Writers are responsible for writing documentation for software and other technical products. This course may be useful for aspiring Technical Writers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing documentation that is easy to maintain and update.
Project Manager
Project Managers are responsible for planning, organizing, and executing projects. This course may be useful for aspiring Project Managers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing project plans that are easy to maintain and update.
Quality Assurance Analyst
Quality Assurance Analysts are responsible for testing and evaluating software systems. This course may be useful for aspiring Quality Assurance Analysts as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing test plans that are easy to maintain and update.
Computer Scientist
Computer Scientists are responsible for studying and developing new computer technologies. This course may be useful for aspiring Computer Scientists as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing new software systems that are easy to maintain and update.
Data Scientist
Data Scientists are responsible for developing and implementing machine learning models. This course may be useful for aspiring Data Scientists as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing machine learning models that are easy to maintain and update.
Machine Learning Engineer
Machine Learning Engineers are responsible for designing and developing machine learning systems. This course may be useful for aspiring Machine Learning Engineers as it provides a solid foundation in writing clean and declarative view models. This is a critical skill for developing machine learning systems that are easy to maintain and update.

Reading list

We've selected six 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 Clean View Models With Assisticant.
Offers a collection of recipes and code samples for implementing MVVM with the MVVM Light Toolkit, a popular library for WPF development. Provides practical guidance on common MVVM scenarios, including working with commands, data binding, and messaging.
Provides a comprehensive guide to designing and building scalable data-intensive applications, covering topics such as data modeling, data storage, and data processing. Offers insights into the challenges of managing large datasets, which can be relevant to the design of view models that handle significant amounts of data.
Offers practical guidance on writing clean and maintainable code, including principles of object-oriented design, refactoring, and code organization. While not specifically covering reactive programming, its principles can be applied to writing clean view models.
Provides a comprehensive reference for WPF development, covering advanced topics such as custom controls, data templates, and animation. While not specifically focused on view models, it offers valuable insights into the inner workings of WPF, which can aid in understanding how view models interact with the UI.
Examines the design and architecture of popular open source applications, including case studies on projects such as the Linux kernel, Apache web server, and Mozilla Firefox. Offers insights into real-world software design patterns and best practices that can be applied to the development of clean view models.
Covers advanced C# concepts and programming practices, including topics such as generics, delegates, and asynchronous programming. Provides a deeper understanding of C# language features that can be applied to writing effective view models.

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