2014-06-18 105 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