2014-06-18 80 views
1

我的WPF应用程序功能完美,但仅在使用鼠标时才起作用。在带有触摸屏的设备上使用时会出现问题。WPF TouchUp事件奇怪的行为

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

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

但是,最近触发的MouseLeftButtonUp事件不是针对我按下的控件而是针对上面提到的网格触发的!它为什么这样表现?

预先感谢您...

+0

你怎么知道MouseLeftButtonUp事件_“被解雇了,但是对于上面提到的网格”_? – franssu

+1

因为网格和我按下的控件都有MouseLeftButtonUp处理程序。网格的处理程序被调用,而控制的处理程序不是。 – user3751451

+1

它是另一个网格,或按钮,或只是layoutcontrol内的一些空白空间。这完全一样。即使我明确订阅MouseLeftButtonUp,控件的处理程序不会被调用,但网格的处理程序不会被调用... – user3751451

回答

0

这是所有RoutedEvent的正常行为。从UIElement.MouseLeftButtonUp event页面上MSDN:

虽然这个路由事件似乎遵循通过元素树冒泡的路线,它实际上是提出并沿着各自的UIElement元素树重新抛出的直接路由事件。

MSDN提供了比Stack Overflow更多的答案和更快的速度。

+1

谢谢..我的水平wpf knowlegde是不足以解析我自己的MSDN ..也许你可以建议我,我应该做什么,使MouseLeftButtonUp事件触发只为我按下的控制,而不是其他人.. – user3751451