多点触摸屏和WPF列表框

4
我正在使用Cyclotouch屏幕叠加,并需要在列表框项目上进行拖放操作(即手指按下并移动),以使其与鼠标拖放操作行为相同(即单击,按住并移动)。我非常需要帮助 - 我可以看到很多关于如何在WPF列表框中实现触摸屏滚动响应的文章(其中项目被向上和向下滚动,但没有移动/保持到手指的位置),但这与我想要的相反。
非常感谢任何帮助,我已经卡在这里一段时间了,不知道有什么解决方法。
谢谢,

你是否正在使用Telerik DragDrop Manager(http://www.telerik.com/products/wpf/drag-drop.aspx)? - Dennis
1个回答

2
我假设您正在使用Surface SDK。如果不是,为什么不呢?这是一个很好的资源:http://msdn.microsoft.com/en-us/library/ff727837.aspx 编辑:重新阅读您的问题后,我看到您使用了Touch-overlay。这是否意味着它们不会触发Windows 7触摸事件,而只是模拟鼠标?如果是这样,那么我有点好奇为什么使用它进行拖放操作与使用普通鼠标不同。
编辑2:
所以你需要在datatemplate中添加两个监听器:PreviewTouchDown和PreviewTouchMove。
这是我用于启动鼠标拖动操作的方法,但是通过一些修改也应该适用于触摸。
private void TreePreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    _startPoint = e.GetPosition(null);
    _checkDragDrop = true;
}
private void TempTreeMouseMove(object sender, MouseEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        var mousePos = e.GetPosition(null);
        var diff = _startPoint - mousePos;
        if (_checkDragDrop)
        {
            if (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance || Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
            {
                _checkDragDrop = false;
                .
                .
                .
                DragDropEffects val = DragDrop.DoDragDrop(DragSourceList, dragData, DragDropEffects.Move);

            }
        }
    }
}

您可能无法在此使用Telerik类。

1
可以做到这一点。您知道触摸叠加层是否生成触摸事件,还是严格的鼠标指针事件吗? - AkselK
这可能是因为Telerik类不是为触摸设计的。你需要自己初始化触摸事件。我会编辑答案并提供一些我认为应该有效的代码。(我现在没有触摸屏,但我下班回家后会测试它) - AkselK
说实话,问题出在标准的WPF列表框上。我提到Telerik控件是因为那是目标,而且要为此编写拖放代码(在列表框和Radscheduleview之间),这很复杂,所以我需要将触摸事件与鼠标事件结合起来。非常感谢。 - user1017882
你刚刚发布的代码是针对鼠标的,然后你甚至评论说“你可能无法使用telerik类来完成这个。”算了吧。如果问题有点棘手,没有人会在这个网站上提供帮助,你唯一回复的原因是因为我把我的整个声誉都放在了这个问题上。 - user1017882
放松一下。请阅读代码上面的段落:这是我用来启动鼠标拖动操作的,稍作修改可能也适用于触摸屏幕。这些修改类似于将MouseButtonEventArgs更改为相关的触摸事件。我说可能不能使用telerik,因为我不知道如何使用它。(并不是你在问题中提到需要使用Telerik类)。但我猜你可以调用OnDragInitialize或类似的函数,而不是DragDrop.DoDragDrop。由于我没有使用过Telerik,所以不能确定。 - AkselK
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接