WPF: события мыши холста не запускаются в пустом пространстве

Я установил события мыши на Canvas следующим образом:

<Canvas MouseUp="CanvasUp" MouseDown="CanvasDown" MouseMove="CanvasMove">
...
</Canvas>

Но они активны только для дочерних элементов, таких как Image и Rectangle, а не для пустого пространства. Как я могу это решить?


person user279244    schedule 24.03.2010    source источник


Ответы (2)


Для элемента управления без установленного цвета фона (явно или с помощью стилей и т. Д.) Цвет фона по умолчанию будет равен нулю, что делает его недоступным для проверки на попадание.

Если вы установите для фона значение «Прозрачный» (или любое другое значение, кроме null ({x:Null})), тогда он сможет улавливать события мыши.

person Rob Fonseca-Ensor    schedule 24.03.2010
comment
Спасибо за ответ, но какое глупое дизайнерское решение команда WPF сделала с этим. - person cdiggins; 04.10.2011
comment
Безумный! Я часами пытался отладить все виды отладки.Спасибо за спасение дня. - person Dark Knight; 01.06.2016
comment
Этот совет - ценная золотая монета! Я бы предпочел по умолчанию использовать для фона холста значение «Прозрачный», а не {x: null}, поскольку обычно вы ожидаете, что событие (с соответствующими аргументами) срабатывает, когда вы нажимаете на пустое пространство холста. Поведение x: null по умолчанию должно быть, скорее, опционально настраиваемым. - person Sold Out; 18.05.2017

Установите цвет фона. По умолчанию null.

Например, используйте Background="White".

person Mark Synowiec    schedule 24.03.2010