window 10 上的 WPF Listview 触摸问题:"an event of another datatemplate is triggered while it may not happen"

WPF Listview touch issue on window 10: "an event of another datatemplate is triggered while it may not happen"

在 windows10 触摸屏 上使用 WPF 应用程序时,我们遇到了列表视图问题。使用鼠标时它工作正常。

我们创建了一个简单的测试项目,用于模拟windows10上的问题,可以在GitHub. A ticket is also created on MSDN

上找到

简而言之,技术设置总结如下:

This works in general well, however sometimes, when touching the checkbox, the PreviousMouseDown of another template is triggered.

我认为这种行为可能不会发生,对吗?

We found a workaround (*) for this issue but we didn't find the root cause.

为什么触发了另一个模板的事件?

I'm starting to believe that this could be an issue with WPF Listview and touch behavior?

(*) 如果我们知道有时事件是从错误的模板触发的, 我们验证每个事件是否来自正确的模板,如果不是,我们什么也不做。

您可以在下面看到当快速点击复选框时触发了点击事件。

下面是代码的更多细节:

Below an overview of the steps we have been taken in order to resolve it, but none lead into a solution.

由于 WPF 支持触摸并且屏幕上的触摸也被“转换”为 mousedown 事件,所以我不明白为什么不在触摸屏上使用 previewMouseDown 事件。我也没有找到任何微软的官方文档不这样做。

无论如何,我无法再重现触摸 listviewitem 调用列表中另一个 listviewitem 的模板的另一个 previeuwMouseDown 事件的问题....

Changing the PrevieuwMouseDown event by a Touchdown event!

很高兴找到解决方案,但是根据许多在线搜索,我觉得 WPF 上的 thouch 存在很多问题,而且通常不清楚根本原因是什么。像这种情况我通过反复试验找到了解决方案,但是为什么在使用previewMouseDown时出现问题,令人费解。