c# - 滑动(轻弹)父 View 时防止在 subview 上单击事件。 WinPhone8.1

标签 c# windows-phone-8 windows-phone win-phone-silverlight-8.1

我有一个带有列表框的 Canvas 。 列表框的每个子元素都为 Click 事件设置事件处理程序。 在 Canvas 上,我为

设置了事件处理程序
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]
     ....
}

我需要在 Canvas 的任何子元素上禁用触发 Click 事件,无论它是否在列表框中。

最佳答案

如果您不想触发它们,为什么要设置点击处理程序?

点击会在按下指针时触发,因此无法判断用户是想要点击还是开始操作。如果您想区分“点击”和滑动,则需要根据点击的位置或稍后的事件来决定。

您可以处理 Tap 手势以及操作事件,而不是 Click。由于 Tap 在指针释放时触发,因此如果用户在一个位置点击并释放,操纵系统将触发它,如果用户按下并移动指针,它将触发操纵。

参见 How to handle manipulation events for Windows Phone 8了解更多详情。

关于c# - 滑动(轻弹)父 View 时防止在 subview 上单击事件。 WinPhone8.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104848/

相关文章:

c# - 使用 C# 在 Windows Phone 应用程序中计数计时器

iOS/Windows 商店应用程序 : can I know whether my other app installed on this device/user account?

c# - 如何在不使用 FQL - .NET 的情况下获取具有 post_id 的整个帖子内容?

c# - 我不明白为什么我们需要 'new' 关键字

c# - 在 Windows Phone 中获取位置时出错

onedrive - 是否可以使用 Windows 8 Phone 模拟器登录 Microsoft 帐户?

android - 开发基于 Windows 的手机的移动应用程序

c# - 使用加速度计环顾四周 - Unity3D C#

c# - 如何使用鼠标指针和键盘快捷键捕获文本?

c# - 如何向 Windows Phone WebBrowser 添加多个 header ?