OnMouseDown
будет вызываться, только если ваш элемент реагирует на проверку удара. См. Тестирование попаданий в визуальном слое . Реализация по умолчанию выполнит тестирование попадания по графике, нарисованной в OnRender
. Создание Panel
с Transparent
фоном работает, потому что Panel
рисует прямоугольник по всей своей области, и этот прямоугольник будет проходить тест на удар. Вы можете получить тот же эффект, переопределив OnRender
, чтобы нарисовать прозрачный прямоугольник:
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawRectangle(Brushes.Transparent, null,
new Rect(0, 0, RenderSize.Width, RenderSize.Height));
}
Вы также можете переопределить HitTestCore
, чтобы все клики учитывались как попадания:
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
return new PointHitTestResult(this, hitTestParameters.HitPoint);
}