2011-04-04 83 views
2

我的WPF用戶控件由幾個子組件構成,它們以彼此重疊(有時完全)的方式放置,但它們在可視化樹上處於同一級別(每個子組件的父級都是主電網)。我希望將鼠標事件從最頂層傳遞到最底層,但是默認的WPF行爲將它們傳遞給可視化樹形路徑,而不是它們的Z順序。不幸的是,不可能將其中一個嵌入另一箇中(以利用默認機制)。我該如何解決這個問題?將鼠標事件傳遞給重疊控件

此致敬禮 - Spook。

+0

爲什麼不可能嵌入它們? – 2011-04-04 11:49:38

+0

@ H.B.:大概是因爲它們在一般情況下並不完全重疊。 – Jon 2011-04-04 11:59:13

回答

1

一個簡單的解決方案是處理父母Grid中的所有事件,方法是不在子控件中附加任何處理程序,並將基於子Z順序的事件手動「路由」到網格的子節點。

這將需要大量的手動工作,但我似乎無法找到任何其他方式來實現WPF中的自定義路由策略。

1

如果您的具體情況要求所有子組件在可視化樹中處於相同級別,那麼最好的做法是對所有子組件設置IsHitTestVisible標誌爲false,在頂級設備上捕獲鼠標事件,大多數級別,然後手動選擇適合鼠標事件的子組件。

相關問題