【问题标题】:How do I set up dragging by touch in Windows Universal Apps on Windows 10 Phone?如何在 Windows 10 Phone 上的 Windows 通用应用程序中设置触摸拖动?
【发布时间】:2015-11-11 19:52:19
【问题描述】:

我已经成功设置了我的网格,以便用鼠标拖动

<Grid x:Name="SourceGrid13"
              CanDrag="True"
              DragStarting="SourceGrid_DragStarting"
              Margin="0,20,0,0">

但是,这不能通过触摸在 Windows Phone (Windows 10) 上拖动。我该如何设置?

我还假设一旦我得到网格拖动,放置顺序将与鼠标相同?这是我的删除代码:

 <ListView HorizontalAlignment="Center" AllowDrop="True"
                 Drop="Image_Drop"
                 DragEnter="TargetImage_DragEnter"
                 DragLeave="TargetImage_DragLeave"
                 CanDragItems="True"
                 IsSwipeEnabled="True"
                 MinHeight="124"
                 Grid.Row="4"
                 Grid.Column="1">
                <Image Height="224"/>
 </ListView>

在平板电脑上也很难,但它会通过触摸拖动。我需要在手机上的某个地方启用它吗?

我现在认为触摸拖动可能会被禁用,直到未来的更新或 Windows Phone 上的 Windows 10 上的实际发布。

根据答案更新:

我将 listView 的 CanDragItems 和 IsSwipeEnabled 设置为 True,但这并没有改变任何东西。我应用了带有一些奇怪结果的操作矩形。在电话上,我可以拖动矩形,但是当我将它带入我的 ListViews 时,它就消失了。由这些图片显示:

全矩形:

将其拖出框架元素 - 它被拖到 listView 后面。

在桌面上,矩形是拖到listView前面的,但是拖出原来的Framework Element之后就无法拖拽了。

【问题讨论】:

  • 双击对象时是否可以在手机上使用?根据this question“这可能与 Windows 8 的操作系统设置有关。查看“笔和触控”设置” – d.moncada
  • @KiroYakuza 如果我双击则不起作用。没有笔和触摸设置(可能是因为 Windows 10)。当我搜索笔时,什么都没有出现。搜索touch的时候有touch设置但是打不开。
  • 你试过这个解决方案了吗?stackoverflow.com/questions/3191084/…
  • @ApceHHypocrite 在 Windows Universal 中是否可用?你能发布一些代码
  • 看来您的问题涉及Windows 10平台,因此我已将其标签更改为更合适的标签。如果我错了,请纠正我。

标签: c# windows-10 drag uwp windows-10-mobile


【解决方案1】:

任何触摸屏操作所需的所有东西都在包装盒中。有一个简单的例子——RectangleCanvas:

<Canvas Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Rectangle Width="50" Height="50" Fill="Blue" RenderTransformOrigin="0.5,0.5"
        ManipulationDelta="Rectangle_ManipulationDelta" ManipulationMode="All">
        <Rectangle.RenderTransform>
            <TranslateTransform x:Name="dragTranslation" />
        </Rectangle.RenderTransform>
    </Rectangle>
</Canvas>

最少的处理代码是:

private void Rectangle_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) {
    dragTranslation.X += e.Delta.Translation.X;
    dragTranslation.Y += e.Delta.Translation.Y;
}

在触摸屏和桌面上用鼠标拖动Canvas 上的任何UIElement 就足够了。拖动Grid 也可以。

【讨论】:

  • 我只来得及在Desktop上测试一下,第一次拖的时候就可以了,但是掉了之后就再也捡不起来了。下降后它也不会回到相同的位置
  • 我已经用与您的答案相关的错误编辑了我的问题
猜你喜欢
  • 1970-01-01
  • 2017-09-15
  • 2016-07-13
  • 1970-01-01
  • 2015-11-30
  • 2016-10-05
  • 2015-11-09
  • 1970-01-01
  • 2015-08-18
相关资源
最近更新 更多