2
我有一個畫布,它的VisualCollection中有子DrawingVisuals。我想對某些類型的孩子進行測試,但不是針對其他人。要做到這一點,我寫HitTestFilterCallback功能:WPF - 命中測試過濾器回調
public HitTestFilterBehavior MyHitTestFilter(DependencyObject o)
{
Debug.WriteLine(o.GetType());
if (o is BackgroundLine)
{
return HitTestFilterBehavior.ContinueSkipSelf;
}
else
{
return HitTestFilterBehavior.Continue;
}
}
所以我檢查畫布的孩子是否是BackgroundLine,這是從DrawingVisual得出,如果是我跳過它。但是,我從Debug.WriteLine(o.GetType())獲取的類型僅爲System.Windows.Media.DrawingVisual。有沒有一種方法可以找到最具體的對象類型?
其餘代碼如下。我只想測試GraphicsBase對象。
GraphicsBase hit = null;
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
hit = (GraphicsBase)result.VisualHit;
return HitTestResultBehavior.Stop;
}
VisualTreeHelper.HitTest(drawingCanvas, new HitTestFilterCallback(MyHitTestFilter),
new HitTestResultCallback(MyHitTestResult), new PointHitTestParameters(point));
if (hit != null)
Debug.WriteLine("hit");
else
Debug.WriteLine("nothing");
你能分享一個調用`MyHitTestFilter`的代碼嗎? – TarasB 2010-12-09 23:06:03