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 管理面板包