Я пытаюсь испытать кучу UserControls на холсте. Я не хочу, чтобы HitTest() проходил весь путь через визуальное дерево, поэтому я использую FilterCallback, чтобы убедиться, что я только проверял UserControl.Проблема с VisualTreeHelper.HitTest в WPF
Моя проблема заключается в том, что 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.
}
Может подтвердить, что это работает. Должен быть принятый ответ, поскольку он лучше, чем поиск по визуальному дереву вручную. – Lennart