I just launched brand new opensource WPF controls library project JungleControls. I will publish all my general-purpose controls through the library and I encourage you to do the same (yes, contribs are welcome).
You can get it from Nuget. Source code is in JungleControls project on Bitbucket.
Currently the following controls are part of the library:
- ColoredImage - Create colored versions of single source icon.
- DataPipe - OneWayToSource binding of read-only properties to view model.
- DelayedContentControl - A way around data binding errors in ContentControl.
- ExposeControl - Makes selected XAML element visible to view model.
- LazyControl - Enables virtualization of complex layouts.
- PrecisePopup - Alternative to Popup that has predictable behavior around screen edges.
- PropertySheet - Classic property sheet with headers on the left and content on the right.
- SelectableTextBlock - Text block that allows users to select text by using the mouse.
- StatCounter - Big number/datum with smaller header above or below it.
Perhaps, someday in the future, Win8 and other variants of WPF will be supported, but now it's WPF. Contributors wishing to add Win8 support are sincerely welcome.
Besides being a useful resource for developers and convenient dumping ground for general-purpose controls from my other projects, JungleControls demonstrates highly productive control authoring techniques.
JungleControls utilizes Assisticant and view models internally while presenting innocently looking dependency properties to the outside world. A very thin layer of facade controls is used to make app developers believe they are using real controls.
I have refrained from making the controls lookless. While you can still provide your own ControlTemplate, there are no PARTs and no UI-less behavior. It's up to you to redefine the behavior when you redefine the looks.
I have instead opted for allowing templating of various control pieces directly via templates (HeaderTemplate, ContentTemplate). This is much easier to implement while providing users with almost the same level of visual flexibility.
Most of the time though, you should be fine just setting properties on the control. There are plenty of properties for adjusting every aspect of the control. Properties are much easier to use in styles and with bindings than templates anyway. If you run out of customization options, it's really easy to develop yet another control. It's often way easier than trying to mess around with control templates.
Anyway, enjoy the library and remember to contribute a patch or two :)