2012-04-11 56 views
2

我在同一個畫布上有幾個控件,可能會被另一個控件覆蓋。它們都具有相同的zIndex,但是對於加載的訂單,有些正在啓動,另一些則已停止。 我的問題,如果Acontrol結束Bcontrol,我點擊它們,但只有A獲得點擊事件。我怎樣才能讓B得到這個活動呢?謝謝。如何在wpf中單擊鼠標時用較低的zindex獲得控制權?

+0

已嘗試將MouseClick事件中的處理屬性設置爲false? – Dominik 2012-04-11 06:37:27

+0

我試過了,但沒有工作... – Cuero 2012-04-11 10:00:30

回答

2

如果您只希望後面的人獲得該事件,那麼對於第一個人前面的所有控件,您必須爲後面的人設置IsHitTestVisible = False以獲得事件 - 但這不是你要。

如果您希望他們都能獲得該事件,請將整個UI視爲元素樹。你所說的所有這些控制都是兄弟姐妹。當點擊某件事物時,父母是第一個得到通知的人,如果它不處理該點擊,它會傳遞給該父母在該鼠標位置的可見子元素,依此類推,直到處理完爲止。要停止點擊處理鼠標點擊的孩子,唯一的方法是讓所有兄弟姐妹的共同父母首先處理事件。

然後,您將不得不在父級處理程序中巧妙地執行一些操作,以調用可在鼠標下方找到的所有子元素的click事件 - 問題在於,儘管框架用於確定哪個控件在鼠標下面,你現在必須做那艱難的工作。

+0

最後,我接受你的建議,似乎工作得很好。謝謝! – Cuero 2012-04-12 01:37:01

1

沒有機會。即使您將MouseClick標記爲未處理,它也會路由到父元素(畫布)而不是同級。唯一的方法是命中測試。當用戶點擊Acontrol時,您應該hit-test確定是否有其他控件在其下。

您必須使用回調測試。這個可以讓你跳過Acontrol來找到Bcontrol。如果你找到它,你可以把Bcontrol當作點擊。

+0

感謝您的建議。 – Cuero 2012-04-12 01:35:37

相關問題