Soon after the Frederick .NET User Group was founded last year, I prepared and gave a presentation on MVVM at one of the monthly meetings. Fortunately, a few of the folks became interested in the pattern and explored it in greater detail to the point of utilizing it in some real-life WPF applications. Having witnessed the interest by software developers using WPF and Silverlight to find a pattern that would take better advantage of the data binding in WPF and Silverlight, I decided to use my MVVM talk as a potential abstract for some regional code camps.
This spring I had the privilege to present my revised WPF/MVVM talk at the Pittsburgh and Richmond Code Camps. Because in the talk, I present the evolution of a WPF from using code-behind to using utilizing the power of data binding and the ICommand interface, I have included the sample project in a series of forms ranging from user interface only with no code-behind to user interface with data and command binding. The slide deck and source code can be found here. As I told the attendees at Pittsburgh and Richmond, while the MVVM pattern works very well with WPF and Silverlight applications, it is not in my opinion a fit for all situations and still varies by implementation depending on whose camp one listens.