Панель MouseEnter/MouseMove, включая пробелы
Панели WPF поддерживают события из интерфейса IInputElement (большинство событий мыши объявлено здесь)
при выполнении MouseEnter или MouseMove на панели, это будет происходить только при наведении указателя на дочерний элемент управления с этой панели вместо всего пространства панелей.
Пример: панель стека (ориентация = горизонтальная) с текстовым блоком (метка в WPF), текстовым полем и кнопкой. на кнопке есть поле 5. Панель стека имеет MouseEnter и обработчик MouseLeave. когда эти события запускаются, в текстовом блоке и в текстовом поле будет установлен некоторый текст (например: "Введена панель стека" и "Влево панель стека"). текст текстового блока будет обновлен, текстовый текст будет добавлен.
Если вы перейдете к своей панели стека слева направо (от текстового блока к кнопке), вы увидите, что текст в текстовом поле будет выглядеть следующим образом: "Введена панель стека Панель стека оставлена панель стека введена".
Событие MouseLeave сработало. это потому, что пробел между текстовым полем и кнопкой (поле кнопки, если вы помните).
Мой вопрос: что нужно изменить на панели стека, чтобы не вызывать событие MouseLeave с той же ситуацией и условиями?
Другими словами: как связать событие MouseEnter и MouseLeave с самой панелью стека, а не с его дочерними элементами, чтобы все пространство стековой панели было "зоной событий"?
1 ответ
Похоже, что ответ имеет отношение к цвету фона. Ядро презентации предполагает, что пустое пространство принадлежит родителю (или одному из родителей) Stackpanel.
Хорошее решение: переопределить фон по умолчанию или установить фон. это "Прозрачный" (RGB: 0 255 255 255, Hex: #00FFFFFF). Значение должно быть менее прозрачным (RGB: 1 255 255 255, Hex: #01FFFFFF).