Sunday, June 14, 2009

Doing WPF/SilverLight? Interested in presentation patterns like MVVM, MVC? Testing/TDD friendly development? Solutions to common UI architecture problems? Then Caliburn might just be for you…

CodePlexCaliburn

Caliburn

Project Description
Designed to aid in the development of WPF and Silverlight applications, Caliburn implements a variety of UI patterns for solving real-world problems. Patterns that are enabled by the framework include MVC, MVP, Presentation Model (MVVM), Commands and Application Controller.

Goals

  • Support building WPF/SL application that are TDD friendly.
  • Implement functionality for simplifying various UI design patterns in WPF/SL. These patterns include MVC, MVP, Presentation Model (MVVM), Commands, etc.
  • Ease the use of a dependency injection container with WPF/SL.
  • Simplify or provide alternatives to common WPF/SL related tasks.
  • Provide solutions to common UI architecture problems.

…”

Caliburn - Table of Contents

image

Caliburn - Feature Overview

Actions

Actions extend the databinding capabilities of WPF/SL by enabling a UI to bind not only to data but to methods. Caliburn uses triggers to wire events, gestures, and attached events (extensible to any trigger type you can think of) to methods on a presentation-related class. This type of method binding removes much of the glue code involved in building an MVC or MVP architecture. Additionally, it enables very rich Presentation Model (MVVM) scenarios. …

Commands

Caliburn's command implementation is an alternative to WPF's and supplies very useful functionality that is altogether missing from Silverlight. As you might expect, it is an implementation of the Command Pattern. . …

MVP and Application Controller

Two common patterns that occur in applications are Supervising Controller and Application Controller. Caliburn supports architectures based on these ideas directly through its various implementations of the IPresenter interface. …

Presentation Model and MVVM

Caliburn also supplies a set of base classes that enable transactional editing, n-level undo/redo, dirty tracking and validation. These classes are perfect for creating an editable ViewModel or representing the “Model” portion of the MVP triad when utilizing a Supervising Controller. …

Testability

One of the goals of Caliburn is to make it easier to build applications right. To this effect, Caliburn has features geared around unit testing. There is currently rich support for testing databindings in WPF and a simple fluent interface for verifying change notification on model objects. …

Utilities

Various utility classes and extension methods are provided as part of Caliburn. The most popular of which is the Execute static class, which enables a developer to easily execute code on a background thread or on the UI thread.

…”

Caliburn - Release Candidate

“…

Release Notes

In this version:

  • Refactored assemblies for greater ease of use.
  • Implemented Application base classes that support model-first development.
  • Introduced IViewStrategy and the View.Model attached property.
  • Added CommandSource triggers
  • Tweaked the implementation of Actions/Commands so that it performs better and is more intelligent
  • Updated dependencies
  • Added a WPF version of the LOB Sample
  • Factored out mini-frameworks for the LOB samples.
  • Implemented binding validation of hierarchical path notation.
  • Fixed many bugs throughout the framework.

…”

This is a non-trivial project, with a great deal of finishing touches you might not expect such as documentation, samples, etc.

image

Given its complexity, you might think that getting the source to work on your machine might be challenging? Nope, not for me at least. Downloaded and compiled the first time for me with no problems (which if you’ve ever released source you know can be a pain)

Project added to my watch list.  :)

(via .NET & Funky Fresh - Caliburn v1 Release Candidate)

No comments: