The May CTP release of the Layouts mix introduces a new animation panel called Carousel. This is a simple, but powerful, panel that arranges its children in an elliptical layout. By default, the panel will scale its children and set their z-index values to create a 2D layout that has the appearance of a 3D carousel. For greater control, you may opt out of this automatic scaling and ordering behavior and control the scale and z-indices via bindings to attached properties on the children.
This sample demonstrates how you might implement a ListBox that uses the Carousel panel as its items host. In this ListBox implementation, selecting an item will bring it to the front of the carousel (as long as the IsSelectionSynchronized property on the ListBox is true). You can also rotate the carousel by dragging any item within it. Upon release of the item, the foremost child of the carousel will automatically be selected.
Note: The ListBox implementation in this sample is provided purely for demonstration purposes. You are free to use it and modify it as you desire, but it is not a supported blendables component. It was merely created to show off the Carousel panel (which is fully supported, of course).
This sample also contains a property explorer so that you can see the effects of modifying different properties on the carousel. It also demonstrates how to use a custom style to perform the aforementioned scaling and z-ordering.
*This sample has been updated to work with the 3D Mix July CTP.