MouseEnter/MouseMove 面板,包括空格

Posted

技术标签:

【中文标题】MouseEnter/MouseMove 面板,包括空格【英文标题】:MouseEnter/MouseMove Panel including whitespace 【发布时间】:2012-10-09 07:15:42 【问题描述】:

WPF 面板支持来自 IInputElement 接口的事件(大部分鼠标事件都在这里声明)

在面板中执行 MouseEnter 或 MouseMove 时,它​​只会在您将鼠标悬停在该面板中的 childcpntrol 而不是整个面板空间上时执行该事件

示例:带有文本块(WPF 中的标签)、文本框和按钮的 Stackpanel(方向 = 水平)。按钮上的边距为 5。 Stackpanel 有一个 MouseEnter 和一个 MouseLeave 处理程序。当这些事件触发时,将在文本块和文本框中设置一些文本(例如:'Stackpanel enter'和'Stackpanel left')。文本块的文本将被更新,文本框文本将被添加。

如果您从左到右(从文本块到按钮)进入堆栈面板,您将看到文本框中的文本如下: 'Stackpanel 已进入 Stackpanel 左侧 Stackpanel 已进入'。

MouseLeave 事件被触发。这是因为文本框和按钮之间的空白(如果你记得的话,就是按钮的边距)。

我的问题是:必须在堆栈面板上进行哪些更改才能在相同的情况和条件下不触发 MouseLeave 事件?

换句话说:如何将 MouseEnter 和 MouseLeave 事件链接到 Stackpanel 本身而不是其子级上,以便 stackpanel 的所有空间都是“事件区域”?

【问题讨论】:

【参考方案1】:

看起来答案与背景颜色有关。 Presentation Core 假定空白属于 Stackpanel 的父级(或父级之一)。

很好的解决方案:覆盖默认背景或设置背景。这是“透明”(RGB:0 255 255 255,十六进制:#00FFFFFF)。值必须不那么透明(RGB:1 255 255 255,十六进制:#01FFFFFF)。

【讨论】:

以上是关于MouseEnter/MouseMove 面板,包括空格的主要内容,如果未能解决你的问题,请参考以下文章

R语言可视化包ggplot2包使用facet_wrap绘制多面板图(子图)实战

一个 Symfony 应用程序中的两个 Sonata 管理面板包

Web协议详解与抓包实战:如何用Chrome的Network面板分析HTTP报文

爬虫工程师必须掌握的 Web 网站调试与抓包分析

傻妞web插件和面板登录插件

win8.1 怎样安装中文语言包