WPF:不透明度和MouseEnter事件
问题描述:
作为图的一部分,我绘制了几个重叠的形状,每个具有Opacity=0.5
,就像这里:WPF:不透明度和MouseEnter事件
<Grid>
<Rectangle Fill="Blue" Opacity="0.5" MouseEnter="Rectangle_MouseEnter" />
<Rectangle Fill="Red" Opacity="0.5" />
</Grid>
private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
{
MessageBox.Show("Entered");
}
当用户用鼠标进入的形状,一些额外的应该显示信息,但事件处理程序永远不会被调用。
有没有办法让所有形状的MouseEnter事件,而不是最上面的一个?
答
在布局中,只有最上面的矩形会引发MouseEnter事件。它完全重叠第一个矩形。
试试这个代码事件处理程序:
private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
{
if (sender != grid.Children[0])
{
var rect = (grid.Children[0] as Rectangle);
if (rect != null) rect.RaiseEvent(e);
}
else
{
MessageBox.Show("Entered.");
}
}
对于这个工作,你需要两个矩形订阅Rectangle_MouseEnter。
是的,我注意到了。 =)当用户进入一个背后的东西时,是否有另一种方式获得通知? – Jens 2010-07-20 14:30:42
恐怕没有...... MouseEnter和MouseLeave事件不会在您放置光标的控件上进行冒泡和提升。 http://msdn.microsoft.com/en-us/library/cc189029(v=VS.95).aspx#mouse_routed_events – 2010-07-20 15:05:57
检查更新,可能会帮助你。 – 2010-07-20 15:10:54