【问题标题】:Can't drag items from a ListView in my Windows Phone 8.1 app无法从我的 Windows Phone 8.1 应用程序中的 ListView 拖动项目
【发布时间】:2014-07-06 15:46:17
【问题描述】:

我正在创建我的第一个 Windows Phone 8.1 应用程序,作为 Windows Store Universal 应用程序的一部分。台式机/平板电脑版本已经完成,并且已经在商店中销售了几个星期,而且效果很好。我很小心,并尽可能少地假设我构建了电话版本,到目前为止我已经取得了相当大的成功。但是,我无法通过实验、Stackoverflow 或 Google 解决一个问题:我无法让 ListView 中的项目可拖动。

这是我的应用程序中其中一个页面的截图:

用户通过将锻炼从右侧的 ListView 拖动到左侧的区域来创建锻炼例程。他们可以根据需要多次拖动练习;这就是为什么它不仅仅是一个可以检查项目的列表。

这在台式机/平板电脑版本上完美运行,但在手机版本上,当我单击并按住一个项目时,我无法将其拖动到任何地方。它不会移动,也不会显示任何可拖动的提示。

这是我用来定义 ListView 的 XAML。它与工作版本几乎相同,但我打开了一些不存在的属性(我认为是IsSwipeEnabled),希望它们能够发挥作用:

    <ListView x:Name="StepsList" ItemsSource="{Binding Steps}"
              ContainerContentChanging="ItemView_ContainerContentChanging"
              SelectionMode="Single" Drop="StepsList_Drop"
              Tapped="StepsList_Tapped"
              CanDragItems="True" 
              AllowDrop="True"
              ScrollViewer.VerticalScrollBarVisibility="Auto"
              Grid.Row="1" Grid.Column="1"
              DragItemsStarting="StepsList_DragItemsStarting"
              Margin="5,0"
              IsSwipeEnabled="True"
              SelectionChanged="StepsList_SelectionChanged">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Center" />
                <Setter Property="MinWidth" Value="300" />
                <Setter Property="MaxWidth" Value="300" />
                <Setter Property="AllowDrop" Value="True" />
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate>
                <local:StepControl Role="StepsSource" Tapped="StepSourceItem_Tapped" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我在DragItemsStarting 事件处理程序代码中放置了一个断点,它永远不会被命中。

【问题讨论】:

  • 我尝试将另一个样本转换为 WP8.1,但也没有成功。扩展搜索只发现了一些其他关于它不起作用的评论......
  • 这个成功了吗?我也有类似的问题。
  • 我没有任何成功,事实上我已经暂时放弃了我的项目。我非常热衷于拥有一个 Windows 通用应用程序(非 Phone 版本的效果很好),但在我看来,Phone 8.1 严重落后于平台的其余部分,而且似乎有问题。我非常失望。

标签: c# listview windows-phone-8 windows-store-apps win-universal-app


【解决方案1】:

需要在后面的代码中设置。

StepsList.ReorderMode =  ListViewReorderMode.Enabled;

【讨论】:

    【解决方案2】:

    MSDN documentation for dragging 表明只有 Windows 8.1 应用程序才会支持它。

    编辑:经过深入研究,似乎应该通过跨平台的通用应用程序开发来支持它。拖动功能是否适用于您的 Windows 8.1 应用程序?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多