Jan Kratochvil
Jan Kratochvil

Reputation: 2327

WinRT 8.1 Phone - ListView reordering

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?

Upvotes: 4

Views: 2049

Answers (2)

HDW Production
HDW Production

Reputation: 1402

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

Upvotes: 12

WiredPrairie
WiredPrairie

Reputation: 59763

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.)

Upvotes: 1

Related Questions