What?

Truss is a binding library for POCOs in .NET. Unlike binding infrastructure that ships with the .NET framework, it is not tied to any particular UI technology.

Why?

Truss allows certain development scenarios to be addressed more cleanly and safely, such as:
  • View models that are related and need to keep certain properties in sync
  • Business objects that are related and need to keep certain properties in sync

Where?

Documentation, binaries, and source for Truss can be downloaded from the releases section.

How?

Person parent = ...;
Person child = ...;

var bindingManager = new BindingManager();
bindingManager.Bindings.Add(new TypedBinding<Person, Person>(parent, p => p.Savings, child, c => c.Inheritance));
Please download the documentation and source for many more examples.

Who?

Truss is currently developed solely by Kent Boogaart.

My initial desire for a POCO binding framework came about due to extensive MVVM development in WPF. I found I often had view models that were related and should have certain properties kept in sync. It felt clunky writing explicit callbacks or events to communicate changes between the view models, and unsafe writing handlers for the generic PropertyChanged event. I asked the question as to whether such a library already exists, and found that it did not.

Primary Features

  • Support for single source and multi-source bindings
  • String and lambda-based bindings. The latter ensures bindings are checked for correctness at compile-time
  • Bindings are weak, and will not prevent garbage collection of the target or source objects
  • Implicit and explicit conversion of data during binding operations
  • Support for SynchronizationContext so that changes in properties can be automatically marshaled to the correct thread
  • Support for types that implement ICustomTypeDescriptor
Please see the roadmap for details on planned features.

Last edited Jun 20, 2009 at 1:38 PM by kentcb, version 11