This project is read-only.
What the heck is NoMvvm?

NoMvvm is the bleeding edge of MVVM. Who wants to implement INotifyPropertyChanged or properties, let's use dynamic! NoMvvm makes heavy use of System.Dynamic and conventions to minimalize the code needed to hook up the Model-View-ViewModel pattern. It also enables TDD via the use of dynamic, as well as some additional classes for testing with MVVM.

Does MVVM make you feel like...
  • Too much boilerplate!
  • If data binding in Xaml is so loose and type-free, why do my ViewModels have to be strongly typed?
  • What is this ICommand crap?
  • INotifyPropertyChanged hurts my brain!
  • My manager wants unit testing, how do I do that?
  • I want to be free!

Features (the Secret Sauce)
  • Minimalist framework size
  • base ViewModel class implements
    • INotifyPropertyChanged
    • IDynamicMetaObjectProvider
  • Methods with signature matching Action or Action<dynamic> automatically map to an ICommand
    • As do properties of type Action or Action<dynamic>
  • All dynamic properties work with WPF data binding and INotifyPropertyChanged
  • A boolean CanX property automatically hooks up to CanExecute on a command of the same name
  • Explicit and simple View->ViewModel wiring
  • Extremely simple to setup
  • Additional helpers for TDD and unit testing your ViewModels

Planned Features
  • More examples and unit tests
  • Test out some DLR languages like IronRuby/IronPython
  • Convention based View->ViewModel wiring (this only works with Ninject currently)
  • Add more helpers for specific non-MVVM-friendly scenarios
  • WP7 support (when they get the DLR)

Work from other Projects

I wanted to acknowledge the use of some code from other projects.

NoMvvm is now on NuGet! Check it out here.

See the documentation for more info on what NoMvvm looks like and how to use it. Or hit up the discussion to give me some much needed input.

Want to help? Got good ideas? Do you ride your bicycle without a helmet? Hit me up and contribute!

Last edited Sep 10, 2011 at 10:20 PM by jonathanpeppers, version 46