The PDFx is a lightweight open source .NET library that allows developers to describe dependencies between Properties in declarative C# code. Once relationships are registered, the framework monitors property changes and ensures that the INotifyPropertyChanged.PropertyChanged event is fired for all directly and indirectly dependent properties in a very efficient way. The library is available for WPF, Silverlight, WinRT (Windows Store) and Windows Phone.
I’ve developed the PDFx as an InterKnowlogy RECESS project and published the source code and examples on codeplex.
In a series of blog posts I am going to cover the library’s most important features:
- Part I: Introduction
- Part II: Library Versions
- Part III: Getting Started
- Part IV: Using PDFx with an existing 3rd party framework
- Part V: Simple Property Dependencies
- Part VI: External Property Dependencies
- Part VII: Dynamic External Property Dependencies
- Part VIII: Collection Dependencies
- Part IX: Dynamic Collection Dependencies
- Part X: Caching
- Part XI: Smart Property Changed Notification
- Part XII: Callbacks
- Part XIII: Sanity Checks
- Part XIV: Data Delegation
- Part XV: Two Way Converters
- Part XVI: One Way Converters
The core of the framework lives in the PropertyDependencyFramework-assembly which is a Portable Class Library. Some optional PDFx features require platform specific functionality that does not come with the .NET Portable Subset. Thus, there exist platform specific libraries for WPF, Silverlight 5, WP8, Windows Store which extend the basic PropertyDependencyFramework-assembly.
If there exists a specific library for your target platform, I strongly recommend using it. If not, you can always fall back on the PCL.
|Feature||.NET 4.5 Portable Class Library||WinRT||WP8||WPF||SL5|
|Simple Property Dependencies||x||x||x||x||x|
|Property Dependencies to external objects||x||x||x||x||x|
|Property Dependencies to ObservableCollections||x||x||x||x||x|
|Property Dependencies to hot swappable external objects||x||x||x||x|
|Property Dependencies to hot swappable ObservableCollections||x||x||x||x|