我正在使用 cyclotouch 屏幕覆盖,并且需要在列表框项目上进行拖放 Action (即手指向下并移动),以与鼠标拖放(即点击、按住手指并移动)的行为相同。我非常迫切需要这方面的帮助 - 我可以看到很多关于解释如何在 wpf 列表框中实现滚动响应到触摸屏的文章(项目是否向上和向下滚动但没有移动/保持到手指是)但这与我想要的相反。

任何帮助都非常感谢,我已经坚持了一段时间,我不知道解决方法。

非常感谢,

最佳答案

我假设您使用的是 Surface SDK。 (如果没有,为什么不呢?)
那么这是一个很好的资源:http://msdn.microsoft.com/en-us/library/ff727837.aspx

编辑:重读你的问题,我看到你使用了触摸覆盖。这些不会触发 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 类。

关于c# - 多点触控屏幕和 WPF 列表框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8444998/

10-13 04:09