Просто добавьте некоторую информацию к ответу выше после изучения проблемы в течение нескольких часов.
Если вы определяете свой собственный шаблон, как в примере выше, вы изменяете визуальное дерево элемента.В приведенном выше примере применения Style="{DynamicResource EmptyButtonStyle}"
это становится:
Button
|
ContentPresenter
Но если вы посмотрите на визуальное дерево стандартной кнопки (вы можете сделать это в Visual Studio), это будет выглядеть так:
Button
|
ButtonChrome
|
ContentPresenter
Таким образом, в стилизованной кнопке нет ничего вокруг ContentPresenter
, по которому можно было бы щелкнуть, и если Контент находится «посередине», окружающая область останется полностью пустой.Мы должны добавить элемент, чтобы занять это место:
Вы можете сделать это с <Border>
(я думаю, что это лучше, потому что Border - это легкий элемент, я полагаю) или с другим элементом, который я пробовал <Grid>
и <DockPanel>
и оба сработали.
Единственное, чего я не понимаю, это то, почему вам нужно явно установить фон на что-то прозрачное, просто оставив его, не произведетактивируемая область.
Редактировать: последняя точка ответа в комментариях здесь Кнопка изображения реагирует только при нажатии на изображение, а не на область вокруг кнопки