我尝试使用DragDrop.DoDragDrop
处理触摸拖放操作。正如我在this post中读到的那样(我也不能使用表面拖动框架)我还必须实现一个QueryContinueDragHandler
,我有以下实现:
(在主窗口构造函数中)
this.QueryContinueDrag += (obj, e) =>
{
if(_touchDevice.IsActive)
e.Action = DragAction.Continue;
else
e.Action = DragAction.Drop;
};
(在某些TouchDown Eventhandler上)
Object data = new Object();
_touchDevice = e.TouchDevice;
DragDrop.DoDragDrop(this, data, DragDropEffects.Link);
然而,这样拖动动作永远不会结束,因为_touchDevice.IsActive
将始终为真,无论TouchDevice是否实际上仍然是"触摸"。
This question is also related to mine,但我觉得答案不尽如人意,我也不想把线程变成僵尸。
如何检测TouchDevice何时/是否处于非活动状态?