2010-10-18 30 views
1

我有一個6×8的網格System.Windows.Controls.Canvas對象。左上角的畫布不會收到鼠標事件,而其他所有人都會收到。我嘗試了OnMouseMoveOnMouseClick事件。鼠標事件沒有達到UIElement

子對象不處理事件,因爲System.Windows.Media.VisualTreeHelper#GetChildrenCount()不顯示任何子項。我也無法趕上PreviewOnMouseMove。在畫布前面是否有一些(可能是透明的)控件優先?

+0

你可以發佈有問題的代碼/ xaml嗎?這將幫助我們幫助您解決您的問題! ;) – 2010-10-18 18:56:13

+0

我知道,我知道。在這裏和那裏創建了很多控件。我的問題會非常龐大​​。 – tilish 2010-10-20 10:31:23

回答

0

終於找到了解決辦法。每個Canvas都有Adorner s。根據this MSDN article,裝飾者在底層UI元素之前接收鼠標事件。我將我所有裝飾者的IsHitTestVisible財產設置爲false

0

我希望這可以幫助你,只是Transparent值設置爲Background屬性爲Canvas

Background="Transparent" 

祝你好運!

+0

我沒有喜悅地嘗試過。 – tilish 2010-10-20 10:29:08

+0

你有沒有試過它的畫布和網格? – Homam 2010-10-20 10:40:54

+0

我只爲Canvas試過 - 但只是爲了記錄我們有任何解釋,爲什麼設置背景透明可能有幫助?編輯:(這將是有益的知道) – tilish 2010-10-20 10:46:01