ReorderListBox is an enhancement to the standard ListBox control for Windows Phone apps that allows users to drag-and-drop list items to reorder the list.

  • All properties including item templates still work.
  • It's compatible with data-binding: the reordering is propagated back to the items source list.
  • It works with ListBox's automatic virtualization to support large item collections efficiently.
  • The list scrolls automatically while dragging up or down near the top or bottom margin.
  • Visuals are fully template-driven, making use of visual states and transition animations.
  • When dragging, the other items smoothly move around to make space for the dragged item.
  • When dropped, an items smoothly slides into its slot.
  • The reorder capability can be enabled or disabled via a dependency property.
  • Animated programmatic rearrangements are also supported.

Each list item has a "handle" shown only when reordering is enabled. Dragging on the handle will drag the item up or down, with a semi-transparent highlight. Dragging anywhere else over the list area will scroll the list normally. The handle appearance is styleable.

Documentation: How to add a ReorderListBox control to your project

This project is based on sample code originally published in two posts on my blog at MSDN:

Last edited Oct 9, 2013 at 7:19 AM by jasongin, version 7