Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
窗口10上的WPF Listview触摸问题:“;另一个datatemplate的事件在可能不会发生时被触发;_Wpf_Listview_Events_Touch_Datatemplate - Fatal编程技术网

窗口10上的WPF Listview触摸问题:“;另一个datatemplate的事件在可能不会发生时被触发;

窗口10上的WPF Listview触摸问题:“;另一个datatemplate的事件在可能不会发生时被触发;,wpf,listview,events,touch,datatemplate,Wpf,Listview,Events,Touch,Datatemplate,在windows 10上使用带有触摸屏的WPF应用程序时,我们会遇到listview问题。当使用鼠标时,它工作正常 我们创建了一个简单的测试项目,用于在windows 10上模拟问题,可以在上找到。还将在上创建票证 简而言之,以下是技术设置的摘要: 我们使用一个分组的列表视图,每个组使用一个切换按钮和 另一个(内部)列表视图 内部listview使用绑定到 Datatemplate选择器,用于选择Datatemplate 将提供3个数据模板(复选框、数字、文本) 根据有界模型的类型属性选择 每

在windows 10上使用带有触摸屏的WPF应用程序时,我们会遇到listview问题。当使用鼠标时,它工作正常

我们创建了一个简单的测试项目,用于在windows 10上模拟问题,可以在上找到。还将在上创建票证

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

  • 我们使用一个分组的列表视图,每个组使用一个切换按钮和 另一个(内部)列表视图
  • 内部listview使用绑定到 Datatemplate选择器,用于选择Datatemplate
  • 将提供3个数据模板(复选框、数字、文本) 根据有界模型的类型属性选择
  • 每个datatemplate都有一个stackpanel。文本中的stackpanel 数字数据模板连接到PreviewMouseDown事件。 重要提示:复选框中的stackpanel未连接到事件
这通常效果很好,但是有时,当触摸复选框时 另一个模板的PreviousMouseDown被触发

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

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

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

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

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

在下面,当快速点击复选框时,您可以看到clickevent被触发

以下是代码的详细信息:

  • 数据模板和选择器

  • 带有内部listview和itemtemplate选择器的分组listview

  • 下面是PreviewMouseDown事件的代码隐藏和处理程序

下文概述了我们为解决此问题而采取的步骤 但没有一个能带来解决方案


因为WPF支持触摸,屏幕上的触摸也会“转换”为鼠标向下事件。我看不出为什么不在触摸屏上使用previewMouseDown事件有什么问题。我也没有发现微软没有这样做的任何官方文档

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

通过触地事件更改PreviewMouseDown事件


我很高兴能找到一个解决方案,但是基于许多在线搜索,我觉得WPF上的thouch有很多问题,而且通常不清楚根本原因是什么。就像在本例中一样,我通过尝试和错误找到了解决方案,但为什么在使用previewMouseDown时会出现问题,令人费解。

已知问题@I33t,确实也是一个wpf触摸问题,但是代码设置不同,因此我假设根本原因也不同,但不确定。。。。