Silverlight Flow Layouts library is a control library allowing to create ItemsControls with a Cover-flow, Carousel or other 2D / 3D complex layouts. It targets Silverlight 4, is written in C# and targets average Silverlight Developpers
A live demo is accessible here:
Since last release (http://slflow.codeplex.com/releases/view/62907), you can install the controls directly from Visual Studio using these nuget commands :
- Silverlight version : Install-Package FlowControls-sl
- Windows Phone 7 version : Install-Package FlowControls-wp7
- WPF version : Install-Package FlowControls-wpf
or with additional layout algorithms:
- Silverlight version : Install-Package FlowControls.algos-sl
- Windows Phone 7 version : Install-Package FlowControls.algos-wp7
- WPF version : Install-Package FlowControls.algos-wpf
- Virtualisation: FlowItemsControl2D and FlowItemsControl3D can handle thousands of child elements with amazing performance
- Style-ready: ItemContainerStyle of FlowItemsControl2D and FlowItemsControl3D can be easily styled to customize the look and feel of individual items including VisualState management
- DataTemplate-ready: FlowItemsControl2D and FlowItemsControl3D are standard ItemsControl and expose an ItemTemplate property for templating their data source. Additionaly, the library provides an InConverFlowContentControl that can be used inside an ItemTemplate
and exposes Selection / Mouse visual states
- Extensibility: 2D and 3D layout logic is externalized. So default layout can be replaced by a custom made one. See IFlowLayout2DAlgorithm and IFlowLayout3DAlgorithm interfaces
- Design-Time ready: provides a rich design-time experience inside Visual Studio 2010 and Expression Blend
- Extensible Gesture API : Enables interaction with the controls in a natural way (with manipulation / inertia feature). Custom layout algorithms can provide their own hit testing logic for gesture based manipulations.
- Silverlight 4, WPF 4.0 and Windows Phone 7 support
- LayoutOffset property on FlowItemBase for better styling support
- LayoutChanged event on IFlowLayout2DAlgorithm and IFlowLayout3DAlgorithm to notify FlowItemsControls to invalidate themselves
- New Layout algorithm : CircleLayout
More to come !
Windows Phone remarks
Windows phone is very performance constrained platform. So you have to be very carefull and test a lot on real devices for performance.
After some tests on real devices on interim builds, I saw that in cases where the item templates are quite complex or use large images, virtualization can have an indesired impact on the scrolling performance. So Virtualization is an opt-in feature for this
If you want to use this library to show many (100+) simple items (with fairly simple templates and no images), make sure to change the ItemPanelTemplate to FlowPanel2D or FlowPanel3D instead of NotVirtualizedFlowPanel2D or NotVirtualizedFlowPanel3D.