I’ve released a new version of my Simple MVVM Toolkit for Silverlight that has improved documentation, a bunch of new features and additional sample applications. The emphasis of the toolkit is simplicity – not in the sense that it’s rinky-dink – but in the sense that simple designs are a) concise and elegant, b) easier to learn and understand, c) easier to build and maintain, and d) more robust because there are fewer moving parts. In fact, I would be so bold as to say my toolkit probably has more features than other toolkits (such as the very popular MVVM Light Toolkit by Laurent Bugnion). And many of those other toolkits are woefully lacking in the way of documentation and code samples. My toolkit is also targeted to Silverlight applications (although I plan to add Windows Phone support shortly), because Microsoft has positioned Silverlight as its primary platform for business application development.
The initial version of my toolkit includes the following features:
- Helper classes, Visual Studio templates, code snippets
- Sample applications with step-by-step instructions
- Model and ViewModel base classes
- Strongly typed data binding with lambda expressions
- View-model locator service
- DelegateCommand based on ICommand
- AssociateProperties method to link view-model and model properties
- Event-based facility for two-way communication between views and view-models (useful for getting user input via modal dialogs)
- IEditableDataObject support with deep cloning
- Conversion of enums to lists for populating combo boxes
- Async support with transparent marshaling to the UI thread
One of my main goals is that you can use the toolkit as a way to learn how to implement the MVVM design pattern for building more robust and maintainable Silverlight applications. I have spent quite a bit of time fleshing out documentation for the toolkit, and the download includes several sample applications. The documentation has a Getting Started section that walks you through building your first Silverlight MVVM app with the toolkit, and there’s a sample app that goes with it, which you can use to follow along. Other sample apps demonstrate features such as enum lists, associated properties, and async support. And there’s a main sample that explores all the other features of the toolkit with an end-to-end application that connects to a WCF service with a backend database.
The toolkit has only been out for 3 weeks and there have already been 179 downloads so far, which is a good sign that there’s a need out there for an approach to MVVM that’s easy to understand and use. I’d especially like to thank Jeremy Alles for listing the toolkit in this Mvvm Frameworks listing.