Introducing the WPF Application Framework
"The WPF Application Framework (WAF) is a lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel (aka MVVM, M-V-VM, PresentationModel) pattern.
- WPF Application Framework (WAF)
- ViewModel: Contains types that help you to implement the Model-View-ViewModel Pattern.
- DataModel: A base class supports you in applying the DataModel-View-ViewModel Pattern.
- DelegateCommand: The DelegateCommand allows you to handle WPF commands in other classes than the View.
- INotifyPropertyChanged: The base classes implement the INotifyPropertyChanged interface. The implementation checks the property name in DEBUG mode.
- WeakEvent: First class support for the WPF WeakEvent Patterns which helps you to avoid memory leaks.
- Validation: The DataErrorInfoSupport class brings the IDataErrorInfo interface with the DataAnnotations validation framework together.
- ConverterCollection: This collection is able to keep the DataModels synchronized with an ObservableCollection of Models.
- Services: Provides services to show a message or the open/save file dialog to the user.
- Recent Files: The RecentFileList class provides the logic for a recent file list that can be loaded and stored in the application settings.
- Unit Testing Extensions
- Exceptions: The ExpectedException method test if an action results in a specified exception.
- PropertyChanged: Provides a helper method to test if a property changed event is raised when a specific action is executed.
- CanExecuteChangedEvent: A helper method to test if a CanExecute changed event is raised when a specific action is executed.
- Email Client: A simple Email Client application that shows how to use the M-V-VM Pattern in a wizard oriented application.
- Writer: A word processing application which uses a “tabbed MDI” as user interface. This sample shows how to use the Message and FileDialog service.
- Book Library: Shows how to use the Entity Framework and Validation together with the MVVM pattern.
- Localization: Demonstrates a simple way to localize a WPF application.
While there's a number of MVVM frameworks available, I thought this one interesting and one I'd like to look deeper into. It's funny what grabs you when you scan a page. In this case, it was the Recent Files class. I hate re-inventing MRU lists (having just done one recently)