鼠标事件运行多次

Mouse Event Runs Multiple Times

在我的程序中它是一个网格内的矩形

<Grid x:Name="mainGrid" Background="Transparent" MouseLeftButtonDown="mainGrid_MouseLeftButtonDown">
    <Rectangle x:Name="rectangle" MouseEnter="rectangle_MouseEnter" Focusable="True" MouseLeftButtonDown="rectangle_MouseLeftButtonDown" MouseLeave="rectangle_MouseLeave" Fill="#FFF4F4F5" Margin="2" Stroke="Transparent"/>

</Grid>

和鼠标左键按下事件:

private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Debug.WriteLine("mouse left button down on rectangle");
    }

    private void mainGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Debug.WriteLine("mouse left button down on mainGrid");
    }

当鼠标按钮在矩形上按下时输出:

mouse left button down on rectangle

mouse left button down on mainGrid

我只想在矩形内单击时触发矩形鼠标事件,在矩形外单击时触发网格鼠标事件

我该怎么做?

MouseLeftButtonDownbubbling event 这意味着它将从原始元素上升到可视化树。您可以通过在 rectangle_MouseLeftButtonDown

中将 Handled 设置为 true 来限制处理程序的执行
private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
    Debug.WriteLine("mouse left button down on rectangle");
}