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.
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
Documentation, binaries, and source for Truss can be downloaded from the releases
Person parent = ...;
Person child = ...;
var bindingManager = new BindingManager();
bindingManager.Bindings.Add(new TypedBinding<Person, Person>(parent, p => p.Savings, child, c => c.Inheritance));
the documentation and source for many more examples.
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.
- 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.