PostSharp
[MVVM]

The must-have companion for your MVVM developments.

  • Remove repetitive code from INotifyPropertyChanged, Commands, Dependency Properties and Undo/Redo.
  • Easy validation with Code Contracts.
  • Keep your View-Model code super clean.
  • Works with most MVVM frameworks: Caliburn.Micro and MVVM Light.
  • Highly customizable.
mvvm

More than 10% of all Fortune 500 companies have already chosen PostSharp.

INotifyPropertyChanged

mvvm-inpc

Get rid of 95% of the INotifyPropertyChanged boilerplate and never miss a notification again.



  • Support for composite properties and child objects

  • Consistent and reliable

  • Fully customizable

  • Integrates with other MVVM frameworks: MVVM Light and Caliburn.Micro

Command

mvvm-command

Stop creating a class every time you define a command.



  • Easy, based on custom attributes and naming conventions.

  • Validated at build time.

  • CanExecute property integrates with the [NotifyPropertyChanged] aspect.

Dependency & Attached Properties

mvvm-dependency-property

Dependency properties that still look like properties.



  • Support for composite properties and child objects.

  • Consistent and reliable.

  • Fully customizable.

  • Integrates with PostSharp code contracts.

  • Integrates with other MVVM frameworks.

Code Contracts

mvvm-code-contracts

The most readable way to validate values at run-time.



  • Works with parameters, output parameters, return values, fields, and properties.

  • Works on interfaces and abstract methods. Automatically inherited.

  • As fast as hand-written code.

  • Customizable and localizable exception messages.

  • Integrates with the [DependencyProperty] aspect.

Weak Event

mvvm-weak-event

Avoid the most common source of memory leaks in .NET.



  • As simple as a custom attribute.

  • Apply to all events in your project in a single line.

Undo/Redo

mvvm-undo-redo

Give your users the familiar Undo/Redo experience without breaking the bank.



  • Undo/Redo any object state change.

  • Handle multiple changes as one step.

  • Expose in the UI with built-in or custom controls.