【发布时间】:2012-01-07 21:24:43
【问题描述】:
您好,我有以下代码,过滤器回调被调用但结果回调没有,我已经研究了一段时间,任何帮助将不胜感激。
public HitTestFilterBehavior MyHitTestFilter(DependencyObject o)
{
s += o.ToString() + " ";
//Test for the object value you want to filter.
if (o.GetType() != typeof(Node))
{
// Visual object and descendants are NOT part of hit test results enumeration.
return HitTestFilterBehavior.ContinueSkipSelf;
}
else
{
s+="node detected ";
// Visual object is part of hit test results enumeration.
return HitTestFilterBehavior.Continue;
}
}
结果回调的代码如下:
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
s += "in result callback ";
if (result.VisualHit.GetType() == typeof(Node))
{
hitResultsList.Add(result.VisualHit as Node);
s+= "node detected in result callback "
return HitTestResultBehavior.Stop;
}
return HitTestResultBehavior.Continue;
}
这是我如何调用命中测试:
hitResultsList.Clear();
VisualTreeHelper.HitTest(designerCanvas, new HitTestFilterCallback(MyHitTestFilter), new HitTestResultCallback(MyHitTestResult), new PointHitTestParameters(End));
现在,过滤器回调正在遍历所有元素并找到节点,但是根本没有调用结果回调。
【问题讨论】: