CoreHelpers Library for WPF

Download (zip, 77 kb)

Updated 19 Dec 2011

Free General Public License

The source code is licensed under the GPL by default.

The GPL license is ideal if you plan to use the code in-house or you plan to develop and distribute your own derivative work as free software under the GPL as well.

Commercial License

A commercial license is required if you want to embed the code in a commercial non-GPL product. Commercial licensees gain access to premium services and support. To request information on Commercial Support and License Options, contact your Account Manager.

The following is a partial list of the functionality provided by this library.

Presentation Models (MVVM)
Aggregation The interfaces IContainer<TContainer,TItem> and IContained<TContainer,TItem> represent the two ends of an aggregative association. These two interfaces can be implemented individually on different classes if the association is not recursive. ITreeNode<T> combines the two roles for a single class to implement when the association is recursive. The library also includes several extension methods that operate on instances of ITreeNode<T>, as discussed in this article.
List/Tree Manipulation Each instance of FlatPlacementArgs<TContainer,TItem> and HierarchicalPlacementArgs<T> encapsulates an operation to place an item within a list or tree and, if already present in the structure, remove it from its old location. The new position can be described in one of two ways: (a) as a "nudge" relative to the original position of the item being moved (frontward, rearward, demote, promote), or (b) as an "insert" relative to another item that acts as a target (sibling after, sibling before, child, parent). Passing in true for the constructor's isSorted parameter causes items to be placed in sorted order.
WPF Extensions
  • The GetTreeViewItem extension method navigates from a TreeView to a given data context's corresponding TreeViewItem.
  • The "axis methods" (mentioned in this blog entry) can be used to query a visual tree node's ancestors, siblings, and descendants.
Tree Rings
Bidirectional Associations The OneToManyAssocSync and ManyToManyAssocSync helper classes make it easy to maintain in-memory the semantics of bidirectional associations, by keeping an association's references in sync in both directions.