WPF中的MouseEnter和MouseLeave处理(使用VS2008和.net 3.5)无法按预期工作

时间:2011-05-10 15:56:42

标签: c# .net wpf routed-events

如果没有图像和没有代码,解释问题并不容易。对于那些感兴趣的人,我制作了一个样本C#/ WPF项目,可以从http://rapidshare.com/files/461745095/02.WPFControlEvents.rar

下载

这是一个非常小的项目(45KB)。问题如下(我为扭曲的描述道歉):

“花哨”(而且相当丑陋)的按钮包含一个堆叠面板,它依次包含1.)标签,2。)帆布,3。)两(2)个同心椭圆,全部从左到右排列。

stackpanel有一个MouseEnter和MouseLeave事件处理程序,它在标题栏中显示一条消息,指示鼠标是在堆栈面板上还是在堆栈面板之外。

问题是:当鼠标位于标签上方(依次包含在堆叠面板中)时,鼠标(正确地)报告为位于堆叠面板上方。当鼠标在画布上移动时(也包含在堆栈面板中),鼠标(错误地?)报告为而不是在堆叠面板上,但是当鼠标移动到更远的地方时右边(在画布上的两个椭圆上),报告鼠标再次位于堆叠面板上。

为什么当鼠标在画布上方时,它被报告为不在堆栈面板上,但当鼠标在椭圆上(在画布上绘制)时,它被报告为在堆栈面板上? / p>

感谢您了解问题,

约翰。

1 个答案:

答案 0 :(得分:2)

您可能需要将“画布的背景”设置为“透明”。这将使其“可以测试”并报告鼠标事件。

可以找到更多信息here,但默认情况下Canvas的背景为空。