VisualCollection для Visual HitTest невидимы?

Я работаю с VisualCollection, Visual и HitTest в WPF и столкнулся с проблемой.

Я попытался сделать собственный визуальный рисунок следующим образом:

public class MyDrawing : Visual
{
    VisualCollection vc;

    public MyDrawing()
    {
        vc = new VisualCollection(this);
    }

     // ...
     DrawingVisual rectangle = new DrawingVisual();
     // ...

     vc.Add(rectangle);
}

public class DrawingArea : FrameworkElement
{
    VisualCollection vc;

    public DrawingArea()
    {
        vc = new VisualCollection(this);

        MyDrawing md1 = new MyDrawing();

        vc.Add(md1);
    }    

    public void TryToHit(Point p)
    {      
        HitTestResult result = VisualTreeHelper.HitTest(this, p);
    }    
}

Затем я обнаружил, что результатом является прямоугольник, но не md1.

Как я могу сделать MyDrawing базовым элементом Visual, чтобы VisualTreeHelper больше не выполнял HitTest внутри?

Большое спасибо.

1 ответ

Вместо рисования Попробуйте следующее.

  public class NoHitTestDrawingVisual : DrawingVisual
    {

        protected override GeometryHitTestResult HitTestCore(GeometryHitTestParameters hitTestParameters)
        {
            return null;
        }

        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
        {
            return null;
        }

    }
Другие вопросы по тегам