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

时间:2014-10-11 12:18:53

标签: c# wpf events canvas mousedown

我有一个画布对象,在代码中生成了许多省略号。我为MouseDown设置了事件处理程序。但是,它无法正常工作。我深入研究了这个问题并以一个非常简单的情况结束: 我有一个窗口,其中Grid为根,内部有一个画布:

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。但我的代码不起作用(事件永远不会发生)。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

因为TextBlock在画布上结束了 如果你没有设置TextBlock的大小,它就会被拉伸。

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

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

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