Я пытаюсь протестировать группу пользовательских элементов управления на холсте. Я не хочу, чтобы HitTest () прошел весь путь по визуальному дереву, поэтому я использую FilterCallback, чтобы удостовериться, что я только проверяю пользовательский контроль.
Моя проблема в том, что UserControl никогда не срабатывает, он должен, но это не так. Если я использую FilterCallback, я возвращаюсь, что он ничего не ударил. Если я позволю HitTest проходить через визуальное дерево, он пропускает UserControl.
Вот код:
<Canvas x:Name="Container">
<UserControl>
<Grid>
<Rectangle />
</Grid>
</UserControl>
<UserControl>
<Grid>
<Rectangle />
</Grid>
</UserControl>
</Canvas>
...
VisualTreeHelper.HitTest(Container, OnFilter, OnResult, myPoint);
...
private void OnResult(DependencyObject o)
{
//I'll get the Rectangle here, but never the userControl
}
private void OnFilter(DependencyObject o)
{
//I will get the UserControl here, but even when I do nothing more than continue, it will not trigger a visualHit. But the child rectangle will.
}