Есть у меня UserControl под именем Pin. Внутри него есть несколько элементов Path. При использовании VisualTreeHelper.HitTest я получаю ссылки на эти Path, однако я хочу получать ссылку на сам Pin. Я узнал, что нужно использовать
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
return new PointHitTestResult(this, hitTestParameters.HitPoint);
}
внутри кода моего Pin, но я по прежнему получаю ссылки на Path вместо Pin.
Что я делаю не так?
В поиске:
void click()
{
Pin pin = null;
Vector2 mouse = Mouse.GetPosition(MainWindow.main).ToVector2();
VisualTreeHelper.HitTest(MainWindow.main, PinHitFilter, PinHitResult, new PointHitTestParameters(mouse));
}
HitTestFilterBehavior PinHitFilter(DependencyObject o)
{
if (o is Pin) return HitTestFilterBehavior.ContinueSkipChildren;
return HitTestFilterBehavior.Continue;
}
HitTestResultBehavior PinHitResult(HitTestResult result)
{
Pin pin = result.VisualHit as Pin;
return HitTestResultBehavior.Stop;
}
В элементе:
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
return new PointHitTestResult(this, hitTestParameters.HitPoint);
}
Так этот способ работает.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей