Создайте полностью прозрачное окно WPF для захвата событий мыши
Я пытаюсь захватить события мыши в WPF, используя самое верхнее прозрачное немодальное окно. Я нахожу, что это отлично работает, если непрозрачность окна составляет 0,01 или больше, и имеет цвет фона, но когда непрозрачность установлена в 0, он больше не получает сообщения мыши. Есть ли способ сделать это окно полностью прозрачным и все еще получать ввод мыши?
Ответы
Ответ 1
Насколько я знаю, нет.
Когда a Control
или Window
полностью прозрачно, его можно щелкнуть. Это можно сделать, если вы установили Window.Background="Transparent"
или Opacity="0"
. Насколько я знаю, это по дизайну в WPF.
При использовании непрозрачности 0,01 вы почти не видите окно, если оно вообще есть. Это, скорее всего, лучший выбор при достижении функциональности.
Изменить: Другое решение, которое я пробовал и работает, - это установить цвет фона почти прозрачным. Я использовал Background="#01000000"
, давая альфа-значение 1. Это делает ваш оконный фон прозрачным, но позволяет размещать на нем элементы управления с полным прозрачностью окна.
Ответ 2
В Visual Studio 2010:
Выберите свое окно в своем представлении.
Задайте свойства вашего окна:
- AllowsTransparency: проверьте его
- Фон: прозрачный
- WindowStyle: None
Ответ 3
Просто установите Background = Brushes.Transparent вместо Background = null.
Вам вообще не нужно использовать прозрачность (т.е. просто оставьте его на 100% непрозрачности).
Ответ 4
Например, я думаю, что ваше управляющее имя MyGrid
, и вы хотите, чтобы оно было Transparent
и всегда получило MouseOverEvent
.....
Если (окно AllowsTransparency
равно True
и, окно Background
равно Transparent
) Затем
используйте цвет #01777777
для MyGrid
Background
или 0.01
для MyGrid
Opacity
.
Else
используйте что-то вроде #00777777
для MyGrid
Background
или 0.00
для MyGrid
Opacity
.
Ответ 5
Установка непрозрачности на 100% (или любое ненулевое значение), а фон в Прозрачный (вместо нулевого) должен сделать большинство элементов управления hittable.
Обязательно установите IsHitTestVisible значение true. Не все элементы управления могут быть удалены, даже если непрозрачность 100%, а фон прозрачен.
Ответ 6
Возможно, вам будет проще использовать Mouse.Capture
.
https://msdn.microsoft.com/en-us/library/ms771301.aspx
Когда объект захватывает мышь, все события, связанные с мышью, обрабатываются так, как если бы объект с захватом мыши выполнял событие, даже если указатель мыши находится над другим объектом.