我在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?
非常感谢。
答案 0 :(得分:0)
而不是Drawingvisual。试试下面的一个。
public class NoHitTestDrawingVisual : DrawingVisual
{
protected override GeometryHitTestResult HitTestCore(GeometryHitTestParameters hitTestParameters)
{
return null;
}
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
return null;
}
}