【发布时间】: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