WPF Listview触摸窗口10:“另一个数据模板的事件在未发生的情况下被触发”

问题描述 投票:0回答:1

[在Windows 10上使用WPF应用程序带触摸屏时,列表视图出现问题。使用鼠标时,它可以正常工作。

我们创建了一个简单的测试项目,该项目用于在Windows 10上模拟问题,可以在GitHub上找到。在MSDN

上还将创建一个票证

简而言之,下面是技术设置摘要:

  • [我们使用分组的列表视图,对于每个组,都有一个切换按钮和另一个(内部)列表视图。
  • 内部列表视图使用绑定到数据模板选择器,用于选择数据模板。
  • 将有3个数据模板(复选框,数字,文本)根据边界模型的type属性选择。
  • 每个数据模板都有一个堆栈面板。文本中的堆栈面板数字数据模板连接到PreviewMouseDown事件。重要的是,复选框中的堆栈面板未连接到事件。

这通常效果很好,但是有时在触摸复选框时,另一个模板的PreviousMouseDown被触发。

我希望这种行为不会发生,对吗?

我们找到了此问题的解决方法(*),但没有找到根目录原因。

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

我开始相信这可能是WPF Listview的问题和触摸行为?

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

[下面您可以看到在快速点击复选框时触发clickevent的触发。

isuses

下面的代码详细信息:

  • 数据模板和选择器

datatemplates

  • 具有内部列表视图和itemtemplate选择器的分组列表视图

listview

  • 在后面的代码和PreviewMouseDown事件的处理程序下面

codebehind

下面概述了我们为了解决问题所采取的步骤它,但是没有一个导致解决方案。

enter image description here

wpf listview events touch datatemplate
1个回答
0
投票
无论如何,我再也无法重现对listviewitem的触摸正在通过....调用列表中另一个listviewitem模板的另一个previeuwMouseDown事件的问题。

通过Touchdown事件更改PrevieuwMouseDown事件!

我很高兴找到一个解决方案,但是基于许多在线搜索,我认为WPF上存在许多问题,而且根本不清楚原因是什么。像在这种情况下一样,我通过反复试验找到了解决方案,但是为什么使用PreviewMouseDown时出现的问题令人困惑。
© www.soinside.com 2019 - 2024. All rights reserved.