Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 329
Jan Kratochvil Avatar asked Dec 12 '22 05:12

Jan Kratochvil


2 Answers

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
like image 152
HDW Production Avatar answered Jan 17 '23 17:01

HDW Production


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

like image 40
WiredPrairie Avatar answered Jan 17 '23 15:01

WiredPrairie