WPF:不透明度和MouseEnter事件

时间:2010-07-20 14:14:31

标签: c# wpf mouseevent opacity

作为图表的一部分,我正在绘制一些重叠的形状,每个形状都带有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事件,而不仅仅是最顶层的事件?

1 个答案:

答案 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。