【问题标题】:WPF TouchUp Event Strange behaivorWPF 修饰事件奇怪的行为
【发布时间】:2014-06-18 08:12:42
【问题描述】:

我的 WPF 应用程序运行良好,但仅在使用鼠标时。在带有触摸屏的设备上使用它时开始出现问题..

我有一个处理 MouseLeftButtonUp 和 TouchUp 事件的网格。

现在,我按下网格,它处理相关事件,然后按下其他控件,其他控件按预期捕获 TouchUp 事件,然后将 TouchUp 事件转换为 MouseLeftButtonUp 事件,这也是可以预料的。

但是,新触发的 MouseLeftButtonUp 事件不是针对我按下的控件触发的,而是针对上述网格触发的!为什么它会这样?

提前谢谢你...

【问题讨论】:

  • 你怎么知道 MouseLeftButtonUp 事件"不是针对我按下的控件触发的,而是针对上面提到的网格"?
  • 因为我按下的网格和控件都有 MouseLeftButtonUp 处理程序。 Grid 的处理程序被调用,而控件的处理程序没有被调用。
  • 它是另一个网格,或按钮,或只是布局控件内的一些空白空间。都是一样的。即使我明确订阅了 MouseLeftButtonUp,控件的处理程序也不会被调用,但网格的处理程序会......
  • 你确定你已经在那个网格上设置了一个Background(一个透明的就可以了)吗?作为旁注,我对Button 感到惊讶,因为内部控件允许事件冒泡。
  • 好吧,我没有。其实它是一个devexpress gridcontrol,所以可能默认设置了背景,需要检查..

标签: wpf touchscreen mouseleftbuttonup


【解决方案1】:

这是所有RoutedEvents 的正常行为。来自 MSDN 上的UIElement.MouseLeftButtonUp event 页面:

虽然此路由事件似乎遵循通过元素树的冒泡路由,但它实际上是由每个 UIElement 沿元素树引发和重新引发的直接路由事件。

MSDN 提供的答案比 Stack Overflow 快得多。

【讨论】:

  • 谢谢.. 我的 wpf 知识水平不足以自己解析 MSDN.. 也许您可以建议我应该怎么做才能使 MouseLeftButtonUp 事件仅针对我按下的控件触发,而不是为其他人..
猜你喜欢
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多