2010-01-13 19 views
7

Dikdörtgen çerçeve öğesi ile çakışan Denetimleri almak için WPF Canvas bileşeninde bir rectangual hit sınaması yapmak istiyorum. Bir Silverlight'ın VisualTreeHelper.FindElementsInHostCoordinates yöntemini buldum, ancak görünüşe göre WPF'de mevcut değil.Silverlight'ın FindElementsInHostCoordinates WPF'de eşdeğeri nedir?

Böyle bir işleve ulaşmak için en iyi yöntem nedir?

cevap

3

En yakın eşdeğer VisualTreeHelper.HitTest. Silverlight'ın FindElementsInHostCoordinates'a önemli ölçüde farklı çalışır, ancak ihtiyaçlarınız için kullanabilmeniz gerekir.

3

var result = VisualTreeHelper.FindElementsInHostCoordinates(myPoint, myUIElement); 

sonra bu WPF kodu için GeometryHitTestParameters yerine PointHitTestParameters kullanmak isteyebilirsiniz özel durumda eşdeğer result

var result = new List<DependencyObject>(); 
         //changed from external edits, because VisualHit is 
         //only a DependencyObject and may not be a UIElement 
         //this could cause exceptions or may not be compiling at all 
         //simply filter the result for class UIElement and 
         //cast it to IEnumerable<UIElement> if you need 
         //the very exact same result including type 

VisualTreeHelper.HitTest(
    myUiElement, 
    null, 
    new HitTestResultCallback(
     (HitTestResult hit)=>{ 
      result.Add(hit.VisualHit); 
      return HitTestResultBehavior.Continue; 
     }), 
    new PointHitTestParameters(myPoint)); 

olmalıdır Silverlight böyle bir çağrı var düşünürsek bir Rect-Testi yapın.