WPF:画布和形状鼠标事件不起作用

本文关键字:鼠标 事件 不起作用 WPF | 更新日期: 2023-09-27 18:26:12

我有一个画布对象,代码中生成了许多省略号。我为MouseDown设置了事件处理程序。然而,它不起作用。我对此深究了很多,最后出现了一个非常简单的情况:我有一个以网格为根的窗口,里面有一个画布:

XML:

<Window x:Class="SQLparserTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="900" Width="1280" >
<Grid>
    <Canvas x:Name="canvas" MouseDown="canvasMouseDown" Background="Red">
    </Canvas>
    <TextBlock x:Name="tooltip" Margin="10">0</TextBlock>
    <Button x:Name="b" Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Top" Click="buttonClick"/>        
</Grid>
</Window>

并在代码中生成处理程序:

 private void canvasMouseDown(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("MouseDown");
        }

我能找到的大多数解决方案都是关于设置背景色而不是null。但我的代码不起作用(事件从不触发)。

有人能告诉我为什么它不起作用吗?

谢谢。

WPF:画布和形状鼠标事件不起作用

因为TextBlock已经在画布上结束了
若不设置TextBlock的大小,它将被拉伸。

也许如果你点击了最边缘,那么消息框就会调用
您可以通过设置文本块的背景来确认文本块的大小。

或者,您应该将名为IsHitTestVisible的属性设置为False

<TextBlock x:Name="tooltip" Margin="10" IsHitTestVisible="False">0</TextBlock>