MouseEnter / MouseMove面板包括空格

时间:2012-10-09 07:15:43

标签: wpf events xaml mouseevent stackpanel

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

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

示例:Stackpanel(Orientation = horizo​​ntal),带有文本块(WPF中的标签),文本框和按钮。按钮上有5的余量。 Stackpanel有一个MouseEnter和一个MouseLeave处理程序。当这些事件触发时,将在文本块和文本框中设置一些文本(例如:'Stackpanel enter'和'Stackpanel left')。文本块的文本将被更新,文本框文本将被添加。

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

将触发MouseLeave事件。这是因为文本框和按钮之间的空白区域(如果你还记得按钮的边距)。

我的问题是:为了在相同的情况和条件下没有发送MouseLeave事件,必须在stackpanel上进行哪些更改?

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

1 个答案:

答案 0 :(得分:3)

看起来答案与backgorund颜色有关。 Presentation Core假定空白区域属于Stackpanel的父级(或其中一个父级)。

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