Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. Everything is included in one Assembly (two if you are using C#) and in many places code has been implemented using compiled Linq Expressions for
performance reason (Object Creation, Dependency Injection, etc). Note: Windows Phone 8 and WPF (.Net 4.5) are also supported.
Some of the core features are:
- StyleMVVM is the only MVVM toolkit for Window Store App that supports all three development languages C#, C++/CX and HTML/JS. Allowing you to export components written in C++/CX and import them into a C# applications.
- Built in validation engine that supports ValidationAttributes, Fluent validation and Method validation depending on your needs. You can validate ViewModels as well as DataModels.
- Conventions module to allow for easier development, as well as templates to setup your project to use conventions.
- Event Handlers can be easily hooked up to your view model using the simple syntax View:EventHandler.Attach="EventName => ViewModelMethod($sender,$eventArgs); etc..."
- Supports Regions similarly to Prism with region registration happening in XAML and navigation being driven from the ViewModel
- Attribute Based IoC container (Export, Import), container is also environment aware and sorts exports accordingly returning the best match at Locate time (RunTime, DesignTime, UnitTest).
- Fluent interfaces for configuring IoC Container programatically (required for C++/CX and Windows Runtime Components)
- Design time ViewModel support. ViewModels are located at design time using IOC so you can use your real ViewModel and replace your IDataService with a Faux version for Design and UnitTest.
- Auto Registration of Views & WCF Clients (i.e. all classes inheriting from ClientBase<T> & Page)
- Implementations for ICommand and Attached Event Commands.
- Messenger service that is Dispatcher Aware (i.e. handlers are called back on the proper dispatcher)
- NavigationViewModel that is tied into the Metro Page Navigation system (Supporting Navigate method & Navigation Events)
- Extensible logging solution
- Configuration service that is expandable by Exporting the IConfigurationStorageProvider interface
- Improved Suspension Manager (auto adds DataContract classes to KnownTypes)
- IMessageBoxService & IFilePickerService wrappers that allow you to mock out your dialogs for Design and Unit Testing purposes
- ICharmService make creating flyout easy by automatically registering charm controls with the SettingPane.
- ITileService, IBadgeService, & IToastService allow for easy updates of tiles and toasts.
- IActivationService that can create or clone any Object (satisfying Imports and message registration)
- ITransformService can transform data objects from one type to another using reflection and Linq Expressions, you can use the Transform attribute to give the service hints on how to transform the property.
- Visual Studio Template for Projects and Items
Make sure NuGet is installed then Install either the x86 build or the x64 build then just create a new Style Application using one of the provided Visual Studio Templates.
VS Code Snippets
If you are looking for some visual studio code snippets to help you on your way check out
- GitHub user: Decors has put together a couple helpful snippets to create delegates and other things.
Goes out to the people at JetBrains
for providing a license for doTrace to the project. Always a big fan of your products.