У меня есть холст, и у него есть дочерние DrawingVisuals в его VisualCollection.Я хочу пройти тестирование против одного типа ребенка, но не против других.Для этого я написал функцию HitTestFilterCallback:
public HitTestFilterBehavior MyHitTestFilter(DependencyObject o)
{
Debug.WriteLine(o.GetType());
if (o is BackgroundLine)
{
return HitTestFilterBehavior.ContinueSkipSelf;
}
else
{
return HitTestFilterBehavior.Continue;
}
}
Итак, я проверяю, является ли дочерний элемент холста фоновой линией, производной от 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");