0
嗨我有下面的代码,过滤器回调被调用,但结果回调没有,我一直在看这个一段时间,任何帮助,将不胜感激。HitTest结果回调不叫
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));
现在,过滤器回调正在经历所有元素并找到节点,但是结果回调函数根本不会被调用。
感谢您的答复,我觉得你的解释,使测试,而不是说得到了由试打的视觉效果,这是因为过滤器经过整棵树整个视觉树的感觉,在这里因为没有过滤器,结果回调仅返回返回两个视觉效果。顺便说一下,结果回调不捕捉节点,所以我用过滤器回调。 – mihajlv 2012-01-08 19:12:31