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

#c# #wpf #xaml

#wpf #xaml #холст

Вопрос:

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

 lt;Canvas MouseUp="CanvasUp" MouseDown="CanvasDown" MouseMove="CanvasMove"gt; ... lt;/Canvasgt;  

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

Ответ №1:

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

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

Комментарии:

1. Спасибо за ответ, но какое ГЛУПОЕ дизайнерское решение приняла команда WPF с этим.

2. Безумие! Я часами пробовал все виды отладки. Спасибо, что спасли мне день

3. Этот совет ценен золотой монетой ! Я бы предпочел, чтобы фон холста по умолчанию был прозрачным, а не {x:null}, как обычно, вы ожидаете, что событие (с соответствующими аргументами) сработает, когда вы нажмете на пустое пространство холста. Скорее, поведение x:null по умолчанию должно быть задано по желанию.

Ответ №2:

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

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