4

I need to create a reorderable ListView in a Windows Phone 8.1 app created using WinRT. The XAML is the following (it binds to an ObservableDictionary in the codebehind):

<Grid Margin="24">
        <ListView x:Name="MainListView" CanDragItems="True" CanReorderItems="True" AllowDrop="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border Padding="24" Margin="16" Background="CadetBlue">
                        <TextBlock Text="{Binding}" />
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>

The ListView does nothing when I try to reorder the items (it looks like the "reordering mode" is not activated).

When I run this sample in Windows 8.1 (the XAML is shared) it works as expected. According to the documentation Windows Phone 8.1 should be supported.

Is this functionality supported on the phone (and the documentation wrong) or do I need to do something special for the phone?

Jan Kratochvil
  • 2,307
  • 1
  • 21
  • 39

2 Answers2

12

For WP you need to set ListViewBase.ReorderMode

This is what works for me - no idea which properties are really necessary; ReorderMode is set in code behind:

<ListView x:Name="fooListView"
          ItemsSource="{Binding barlist, Mode=OneWay}" 
          SelectionMode="None"                
          AllowDrop="True" CanDragItems="True" IsSwipeEnabled="True" />

The ListViewBase.Reorder property is available only for Windows Phone, so if you have the XAML in a Shared part of a universal app, you need to set it using conditional compile like so:

#if WINDOWS_PHONE_APP
            MainListView.ReorderMode =  ListViewReorderMode.Enabled;
#endif
Jan Kratochvil
  • 2,307
  • 1
  • 21
  • 39
HDW Production
  • 1,402
  • 10
  • 13
  • This is a good catch, although it's weird that the ReorderMode is not set automatically when dragging is started – Igor Ralic May 26 '14 at 21:08
1

It appears that the property CanReorderItems is not supported on Windows Phone 8.1.

(I tried a simple example, and it does not work, and I could not find any combination that made it work as it does on Windows 8.1.)

WiredPrairie
  • 58,954
  • 17
  • 116
  • 143