Now that I know WPF - and in particular, now that I understand binding, commands, and the MVVM pattern - I'm not going to use WinForms again. WinForms is fine if you're developing simple, static UIs that aren't ever going to change and if you don't care how they look on machines other than your development workstation. But once you start needing more, your UI code gets more and more complex and difficult to maintain.
WPF applications seem more complex at first, particularly if you think of WinForms as a hammer and your approach to learning WPF is to pound in nails with it. But once you understanding binding and templates, and adopt design patterns that take advantage of those technologies, the complexity melts away. There's bureaucracy - implementing INotifyPropertyChanged
and dependency properties and RoutedCommand
s is pretty tedious, and it feels like there's maybe an abstraction layer missing - but if you look past the surface cruft, WPF applications are actually a lot simpler than WinForms applications. Binding a collection of objects to the ItemsSource
of an ItemsControl
and implementing a DataTemplate
for those objects accomplishes in a very small amount of code and work what would be a considerable effort in WinForms.