VisualCollection到Visual HitTest是不可见的?

时间:2012-06-27 06:47:02

标签: c# wpf visualtreehelper

我在WPF中使用VisualCollection,Visual和HitTest并遇到了问题。

我尝试按如下方式制作自定义可视化绘图:

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 个答案:

答案 0 :(得分:0)

而不是Drawingvisual。试试下面的一个。

  public class NoHitTestDrawingVisual : DrawingVisual
    {

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

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

    }