2008-09-05 16 views

cevap

34

, sayfa 383:

Görsel isabet test size kesişir yaklaşık tümVisual s bilgilendirebilir bir konumu, [...] kullanmak gerekir [...] HitTestResultCallback delegesini kabul eden [VisualTreeHelper.]HitTest yöntemidir. 'un HitTest bu sürümünden önce, delege, ilgili Visual için bir kez, en baştan başlayıp en altta biten bir kez çağrılır.

böyle bir geri arama imza

HitTestResultBehavior Callback(HitTestResult result) 

ve (MSDN üzerinde bağlantılı sayfasından) aşağıda gösterildiği gibi, daha ileri hit almak için HitTestResultBehaviour.Continue dönmek zorundadır:

// Return the result of the hit test to the callback. 
public HitTestResultBehavior MyHitTestResult(HitTestResult result) 
{ 
    // Add the hit test result to the list that will be processed after the enumeration. 
    hitResultsList.Add(result.VisualHit); 

    // Set the behavior to return visuals at all z-order levels. 
    return HitTestResultBehavior.Continue; 
} 

Daha fazla bilgi için lütfen MSDN documentation for VisualTreeHelper.HitTest'a başvurun.

+5

İyi bir örnek için aşağıdaki msdn bağlantısına bakın (bölüm: Bir Hit Test Sonuçlarının Kullanılması). 2010 baskısında [http://msdn.microsoft.com/en-us/library/ms752097.aspx](http://msdn.microsoft.com/en-us/library/ms752097.aspx) –

+1

Sayfa 503 kitap. Bilginize. – Sabuncu

+1

Çoğu zaman ihtiyaç duyduğunuz şey olmayan bir görsel ağaç öğesi aldığınızı unutmayın. Mantıksal görünüm öğelerinizi elde etmek için isabetlerin ebeveynlerini art arda aramak zorundasınız. – henon

36

Ayrıca farenin altında en üstteki elemanı almak için Mouse.DirectlyOver özelliğini kullanmayı deneyebilirsiniz. "WPF Unleashed" Kimden

+0

Bu, ** farenin altında bir dizi öğe sunmayacaktır, ancak gerçekten de en üstteki öğeyi döndürecektir. –