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

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

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

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

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

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

为什么当鼠标悬停在画布上时,它被报告为不在堆栈面板上,但是当鼠标位于画面上(在画布上绘制)时,它被报告为在堆栈面板上?

谢谢你揭开这个问题,

约翰.

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

更多信息可以在here找到,但Canvas默认为空背景.

点赞