A lightweight C# library for two-way data binding between properties of objects, especially useful for UI development.
Praeclarum.Bind is a C# library that provides two-way data binding between object properties. It automatically synchronizes values between UI elements, data models, and other objects, simplifying UI code where model values need to be displayed and edited.
C# developers building UI applications, particularly those using .NET 4.5 or compatible frameworks like Xamarin.iOS, who need to manage data synchronization between UI controls and model objects.
Developers choose Praeclarum.Bind for its simplicity and flexibility, enabling data bindings with minimal code while supporting a wide range of object types and automatic change tracking mechanisms like INotifyPropertyChanged.
A small but powerful C# library for data binding
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses C# lambda expressions with the == operator for readable binding definitions, as shown in examples like Binding.Create(() => nameEdit.Text == person.Name), reducing boilerplate code.
Seamlessly works with objects implementing INotifyPropertyChanged or common events like ValueChanged, enabling real-time updates without manual intervention for supported types.
Allows chaining multiple bindings with && and unbinding them collectively via the Unbind method, simplifying management in dynamic UI scenarios.
Provides a static Binding.Error event for debugging binding issues without raising exceptions, preventing application crashes from binding errors.
The README explicitly states that complex expression bindings are only one-way (from complex to simple side), limiting use cases where two-way data transformations are required.
For objects without INotifyPropertyChanged or supported events, developers must manually call Binding.Invalidate, adding complexity and potential for bugs in change tracking.
As a minimal library, it lacks in-depth guides, advanced examples, and third-party integrations, which can hinder adoption in complex or team-based projects.