PostSharp XAML
Automate MVVM patterns in your WPF apps.
- 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.
INotifyPropertyChanged
Get rid of 95% of the INotify Property Changed 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
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
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
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
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
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.
