I read often in the MVVM community that the Model-View-ViewModel Pattern works only with WPF/Silverlight applications. That’s not true.
MVVM is a design pattern. Per definition a design pattern shows a common solution in the object-oriented world. Such solutions can be applied in various platforms (WPF, WinForms, Java Swing, etc.). I agree that MVVM is best used with WPF/Silverlight because
it leverages the strong data binding capabilities. However, Windows Forms supports data binding as well.
The WAF Windows Forms Adapter shows how to apply the Model-View-ViewModel Pattern in a Windows Forms application. It ships the same BookLibrary sample application
as the WPF Application Framework (WAF) download. It just extends the sample application with an alternative Presentation layer implementation which uses Windows Forms instead of WPF.
This BookLibrary sample application proves that the Applications and
Domain layer of a WAF-based application is really independent of WPF. This way it was possible to replace the WPF technology with Windows Forms by writing a new
Presentation layer whereas the code of the lower layers aren’t even touched. As a result the Windows Forms Views uses the same ViewModel classes as the WPF Views does. That’s how a clean separation into distinct layers should be.