多点触摸屏和WPF列表框

时间:2011-12-09 11:43:06

标签: c# .net wpf listbox touch

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

任何帮助都非常感谢,我已经坚持了一段时间,我不知道如何解决这个问题。

非常感谢,

1 个答案:

答案 0 :(得分:2)

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

编辑:重新阅读您的问题我看到您使用了Touch-overlay。它们是不是会触发Windows 7触摸事件,而只是模拟鼠标?如果是这样,那么我有点好奇为什么使用普通鼠标拖拽它不起作用。

EDIT2:

所以你需要做的是在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类。