windows-runtime - WinRT 8.1 电话 - ListView 重新排序

标签 windows-runtime winrt-xaml windows-phone-8.1

我需要在使用 WinRT 创建的 Windows Phone 8.1 应用程序中创建一个可重新排序的 ListView。
XAML 如下(它绑定(bind)到代码隐藏中的 ObservableDictionary):

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

当我尝试重新排序项目时,ListView 什么都不做(看起来“重新排序模式”未激活)。

当我在 Windows 8.1(共享 XAML)中运行此示例时,它按预期工作。根据documentation应该支持 Windows Phone 8.1。

手机是否支持此功能(并且文档错误)还是我需要为手机做一些特殊的事情?

最佳答案

对于 WP,您需要设置 ListViewBase.ReorderMode

这对我有用——不知道哪些属性是真正必要的; ReorderMode 在后面的代码中设置:

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

ListViewBase.Reorder 属性仅适用于 Windows Phone,因此如果您在通用应用程序的共享部分中有 XAML,则需要使用条件编译来设置它,如下所示:
#if WINDOWS_PHONE_APP
            MainListView.ReorderMode =  ListViewReorderMode.Enabled;
#endif

关于windows-runtime - WinRT 8.1 电话 - ListView 重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875849/

相关文章:

windows-8 - 如何模拟我的 Metro 应用程序被终止?

c# - 检查用户是否在 Windows Phone 8.1 上添加了新音乐

c# - 在 Windows Phone 8.1 上播放 GIF

c# - WinRT 后台任务

c# - TextWrapping 属性设置为 WrapWholeWords 时获取参数不正确错误?

c# - 自定义 View 层次结构的语义缩放,而不是普通的网格或 ListView

c++ - 在 C++/CX 中绑定(bind) IValueConverter 类时出错

c# - Windows Phone 8.1后台任务中的DispatcherTimer

windows - 在 Windows 8 WinRT 中访问振动功能?

windows-runtime - WiFiDirectDevice::FromIdAsync 抛出 Win32 控制台应用程序