WPF: непрозрачность и событие MouseEnter - PullRequest
2 голосов
/ 20 июля 2010

Как часть диаграммы, я рисую несколько перекрывающихся фигур, каждая с 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 Ответ

2 голосов
/ 20 июля 2010

С вашим макетом только самый верхний прямоугольник вызовет событие 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.

...