WPF and UWP, by comparison, include many modern improvements over WinForms, and their similar approaches to supporting dynamic layouts, high-DPI displays, and display scaling are particularly well-done. Indeed, WPF and UWP share a nearly-identical declarative approach to application design via XAML that I find very, very compelling. But it’s equally clear that Microsoft also simply ignored vast swathes of functionality that many developers would need. And that in doing so, it severely handicapped WPF and UWP.
There are many examples of this in both frameworks. As I wrote in What I’ve Learned About C#, Visual Basic, Windows Forms, XAML, and WPF (Premium), Microsoft completely changed how developers access fonts in WPF, making it nearly impossible to use the classic Font dialog that was so easily available from Windows Forms. In fact, it was so easy to display and use this dialog, that it just required one line of code in the original (VB) version of .NETpad: