The OrderableList control will allow the user to order items. To use it, add a reference to the BPC library to your project.
You will need to bind the ItemsSource property of the control to a list (any list type implementing the IList interface). You can change the ItemTemplate for the list items if you want.
<Phone:OrderableList ItemsSource="{Binding}">
<Phone:OrderableList.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Text="{Binding Description}"></TextBlock>
</StackPanel>
</DataTemplate>
</Phone:OrderableList.ItemTemplate>
</Phone:OrderableList>
This will show a list with an icon on the right that will allow the user to drag and drop any item at any place :
As the list is bound, any ordering change will update the original list. In this screenshot for example, the same list is directly bound to an OrderableList and to a classic ItemsControl.