作为图表的一部分,我正在绘制一些重叠的形状,每个形状都带有Opacity=0.5
,如下所示:
<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事件,而不仅仅是最顶层的事件?
答案 0 :(得分:2)
使用您的布局,只有最顶层的矩形会引发MouseEnter事件。它与第一个矩形完全重叠。
尝试使用eventHandler的代码:
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。