How I Build WPF Apps in the Android Way

Marco Cimolai
4 min readMay 27, 2022

I’ve been building Android apps for years; the development experience and community built around it is fantastic. There are a lot of open source libraries and projects from where you can learn from. Thanks to Android Jetpack and Google pushing MVVM design pattern adoption, almost every app follows the same rules and uses the same robust core libraries.

Microsoft vs Google

I can’t say the same for .NET and Microsoft. When I started working on WPF apps, I’ve immediately felt “uncomfortable”. There is a smaller community and really few open source projects, Microsoft is suggesting to use MVVM but you often need to break this pattern because there are controls and classes that are not built for it.

“Microsoft Loves Open Source” statement made in 2019

For years, Microsoft and it’s closed-source philosophy slowed down the evolution of the .NET ecosystem. Now, after shifting towards a more “open” approach, Microsoft is trying to build back a strong developer community built around C# and .NET framework. They’re making more open source libraries (“CommunityToolkit” clearly explains the new strategy) and extending support for other platforms such as Linux. Nevertheless, Microsoft is still years behind the Android developer experience.

Notify in the multiverse of madness

Doctor Strange notifying every property

When I started to develop WPF apps and write my first view model, I encountered what I call the “Notify madness” problem. Let me explain this better, have a look at this view model:

I find it absurd that you need to write 6 lines of code just to define a single notifiable property. Less than a year ago, Microsoft released MvvmToolkit 7.1 Preview where they finally introduced source generators. Now it’s way better, you can just add an attribute to a property and all that code is generated for you.