7

我有一个 Canvas,带有一个子控件。子控件可以正常接收所有 PreviewTouchDown 和 PreviewTouchUp 事件 - 但在IsManipulationEnabledCanvas 上启用 Manipulation (= true) 后,只有“向下”事件会在子对象上触发,但 TouchUp 和 PreviewTouchUp 事件根本不会触发。

有什么想法吗?

4

2 回答 2

6

您还需要在子元素上设置IsManipulationEnabled为。true


触摸和操作事件之间的关系在Input Overview / Touch and Manipulation部分The Relationship Between Touch and Manipulation Events中有解释:

UIElement 始终可以接收触摸事件。当 IsManipulationEnabled 属性设置为 true 时,UIElement 可以接收触摸和操作事件。如果未处理 TouchDown 事件(即 Handled 属性为 false),则操作逻辑将捕获对元素的触摸并生成操作事件。如果在 TouchDown 事件中将 Handled 属性设置为 true,则操作逻辑不会生成操作事件。下图显示了触摸事件和操作事件之间的关系。

触摸和操作事件

触摸和操作事件

于 2013-03-17T12:12:25.887 回答
2

我知道它已经有一年了,但这可能会对某人有所帮助:对于解决方法,如果父元素具有 IsManipulationEnabled = true,您可以很好地捕获“Stylus tap”事件

....

MyChildElement.StylusSystemGesture += MyChildElement_StylusSystemGesture;

....

void MyChildElement_StylusSystemGesture(object sender, StylusSystemGestureEventArgs e)
    {
        if (e.SystemGesture == SystemGesture.Tap)
            //Do something
    }
于 2014-12-03T12:41:24.257 回答