我有一个 Canvas,带有一个子控件。子控件可以正常接收所有 PreviewTouchDown 和 PreviewTouchUp 事件 - 但在IsManipulationEnabled
Canvas 上启用 Manipulation (= true) 后,只有“向下”事件会在子对象上触发,但 TouchUp 和 PreviewTouchUp 事件根本不会触发。
有什么想法吗?
您还需要在子元素上设置IsManipulationEnabled
为。true
触摸和操作事件之间的关系在Input Overview / Touch and Manipulation部分The Relationship Between Touch and Manipulation Events中有解释:
UIElement 始终可以接收触摸事件。当 IsManipulationEnabled 属性设置为 true 时,UIElement 可以接收触摸和操作事件。如果未处理 TouchDown 事件(即 Handled 属性为 false),则操作逻辑将捕获对元素的触摸并生成操作事件。如果在 TouchDown 事件中将 Handled 属性设置为 true,则操作逻辑不会生成操作事件。下图显示了触摸事件和操作事件之间的关系。
触摸和操作事件
我知道它已经有一年了,但这可能会对某人有所帮助:对于解决方法,如果父元素具有 IsManipulationEnabled = true,您可以很好地捕获“Stylus tap”事件
....
MyChildElement.StylusSystemGesture += MyChildElement_StylusSystemGesture;
....
void MyChildElement_StylusSystemGesture(object sender, StylusSystemGestureEventArgs e)
{
if (e.SystemGesture == SystemGesture.Tap)
//Do something
}