网格上的 C# WPF MouseEnter 和 MouseLeave

C# WPF MouseEnter and MouseLeave on Grid

我制作了 2 个 MouseEvents,它们可以正常工作,但问题是它们的工作方式与我预期的不同。当我的鼠标指针位于网格 Space 中时,我需要这两个事件处于活动状态,但现在它们仅在指针位于任何线上时才起作用。

我的代码:

            // Grid 3 Rows.
        Grid grid_Edit = new Grid();
        Grid.SetRow(grid_Edit, 0);
        Grid.SetColumn(grid_Edit, 1);
        RowDefinition rowDef1 = new RowDefinition();
        RowDefinition rowDef2 = new RowDefinition();
        RowDefinition rowDef3 = new RowDefinition();
        grid_Edit.RowDefinitions.Add(rowDef1);
        grid_Edit.RowDefinitions.Add(rowDef2);
        grid_Edit.RowDefinitions.Add(rowDef3);
        grid_Edit.RowDefinitions[0].Height = new GridLength(1, GridUnitType.Star);
        grid_Edit.RowDefinitions[1].Height = new GridLength(1, GridUnitType.Star);
        grid_Edit.RowDefinitions[2].Height = new GridLength(1, GridUnitType.Star);
        grid_Edit.MouseEnter += new MouseEventHandler(gridEdit_MouseEnter);
        grid_Edit.MouseLeave += new MouseEventHandler(gridEdit_MouseLeave);
        mainWindow_ref.Children.Add(grid_Edit);

        // 3 lines
        line1.Stroke = Brushes.White;
        line1.X1 = 1;
        line1.Stretch = Stretch.Fill;
        Grid.SetRow(line1, 0);
        line1.VerticalAlignment = VerticalAlignment.Center;

        line2.Stroke = Brushes.White;
        line2.X1 = 1;
        line2.Stretch = Stretch.Fill;
        Grid.SetRow(line2, 1);
        line2.VerticalAlignment = VerticalAlignment.Center;

        line3.Stroke = Brushes.White;
        line3.X1 = 1;
        line3.Stretch = Stretch.Fill;
        Grid.SetRow(line3, 2);
        line3.VerticalAlignment = VerticalAlignment.Center;

        // add lines to grid_Edit
        grid_Edit.Children.Add(line1);
        grid_Edit.Children.Add(line2);
        grid_Edit.Children.Add(line3);



    private static void gridEdit_MouseLeave(object sender, MouseEventArgs e)
    {
        line1.Stroke = Brushes.White;
        line2.Stroke = Brushes.White;
        line3.Stroke = Brushes.White;
    }

    private static void gridEdit_MouseEnter(object sender, MouseEventArgs e)
    {
        line1.Stroke = Brushes.Black;
        line2.Stroke = Brushes.Black;
        line3.Stroke = Brushes.Black;
    }

将 Grid 的背景颜色设置为透明,这将允许 Grid 捕获鼠标事件。