我有一个画布,里面有一个列表框。listbox的每个子元素都为Click事件设置事件处理程序。在画布上,我为设置了事件处理程序
ManipulationStarted="canvas_ManipulationStarted"
ManipulationDelta="canvas_ManipulationDelta"
ManipulationCompleted="canvas_ManipulationCompleted"
我的刷码非常有效。有一件事,它在ManipulationCompleted事件处理程序之前触发Click事件处理程序。
但例如,列表框在同一时间完美滚动,不会触发Click事件。
所以基本上,我需要的是以列表框的方式处理操作事件
如果此条件成立:
private void canvas_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
e.DeltaManipulation.Translation.X > [some value]
....
}
我需要在画布的任何子元素上禁用激发Click事件,不管它是否在列表框中。
如果不想触发点击处理程序,为什么要设置它们?
点击会在按下指针时触发,所以无法判断用户是想点击还是开始操作。如果你想区分"点击"和滑动,你需要根据点击的位置或稍后的事件来决定。
您可以处理Tap手势和操纵事件,而不是Click。由于点击在释放的指针上触发,如果用户在一个位置点击并释放,操作系统将触发它,如果用户按下并移动指针,它将触发操作。
有关详细信息,请参阅如何处理Windows Phone 8的操作事件。