Model-View-ViewModel application framework and library for WPF, Surface, and SilverlightMvvmFx makes it easy to implement M-V-VM and leverage pre-existing functionality and code for common situations. It's developed in C#.
It contains a set of base classes and functionality for rapidly creating applications using the M-V-VM approach to application architecture.
It targets both WPF and Silverlight, and contains specific classes for supporting Microsoft Surface development.
It favours a compositional approach over inheritance - the base ViewModel classes are very lightweight and additional behaviors are exposed via composition
It provides the following functionality:
- Light-weight Base ViewModel and ViewModelCollection classes
- Support for observing ViewModel changes via the ObservableViewModel and ObservableViewModelCollection classes.
- Easy support for binding to selectable collections via the SelectableViewModel and SelectableCollection classes.
- Several implementations of ICommand - ViewModelCommand, RoutedViewModelCommand, ActionCommand, DelegateCommand.
- CommandHandler class for handling the execution of commands at the level of the views.
- Validation rules engine - based on the delegate approach to validation rules in Rocky Lhotka's CSLA framework.
- Out-the-box support for process-oriented GUI's such as wizards or page workflows, via the ProcessManagement namespace.
- Change tracking support - automatically track when a ViewModel or one of its child objects is modified.
- Classes to load and save ViewModel objects to/from their corresponding model objects.
- Factory classes for creating ViewModel objects to encapsulate their hydration from model objects.
- Support for stateful Surface applications using a state-engine approach.
- Several useful ValueConverters for common scenarios
- Many useful Helper classes for common scenarios.
- Attached properties for:
- Binding Silverlight controls to commands
- Binding WPF RoutedEvents to commands
- Getting DesignTime text in Silverlight - like the FallbackValue property in WPF.
- DataTemplateSelector for Silverlight
- Several Sample projects and examples to demonstrate how to use the framework.
There is a google group for this project here:
http://groups.google.com/group/mvvmfx
