2011-05-16 24 views
1

我想圍繞下面的問題: 我有一個3行1列的網格。每個單元格都有一些子控件。另外,我控制了整個3行,就像是一個「疊加」,我在整個Grid中渲染一些視覺效果。我需要在這個覆蓋層以及子控件上進行命中測試。 但是,由於構建邏輯/可視化樹的方式,覆蓋層的父層是網格,而不是子層(與覆蓋層在樹中處於同一層)。 我怎樣才能構建WPF樹,以便事件向上冒泡到網格的其他控件。WPF佈局和事件路由(命中測試) - 我如何構建我的層次結構?

樹看起來是這樣的:

Grid 
    - Row 1 Control 
    - Row 2 Control 
    - Row 3 Control 
    - Overlay (Row 1 - 3) Control 

如果覆蓋不處理的事件,我需要處理它的行1/2/3控制。我希望我的問題很清楚。

回答

1

看看WPF支持hittesting使用VisualTreeHelper.HitTest

+0

謝謝,但我想我仍然需要一個視覺樹,這正確代表了我的問題。在覆蓋節點上使用VisualTreeHelper.HitTest方法並且沒有命中時,其他3個控件(第1 - 3行)將不會被測試。 – slurmomatic 2011-05-16 15:03:14

+0

如果使用VisualTreeHelper.HitTest並將Grid作爲起始參考,則HitTest方法將測試Grid的所有子項,包括Overlay控件和其他三個控件。這在我提供的鏈接中的「視覺樹如何影響命中測試」一節中進行了描述。 – 2011-05-16 15:08:08

+0

謝謝,我錯過了。你將如何處理其他事件? – slurmomatic 2011-05-16 15:16:04