2014-10-11 73 views
-1

我有一个画布对象,其中有很多椭圆在代码中生成。我为MouseDown设置了事件处理程序。但是,它不起作用。我挖这个有很多和我有一个非常简单的情况下结束: 我有一个网格,根和画布里面一个窗口:WPF:画布和形状鼠标事件不起作用

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"); 
     } 

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

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

谢谢。

+0

画布的大小是多少?你真的关注画布吗? – 2014-10-11 12:32:25

回答

1

由于TextBlock在画布上。
如果您没有设置TextBlock的大小,它将被拉伸。

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

或者您应该设置一个属性,名称为IsHitTestVisibleFalse
like

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

圣洁,这解决了我的问题。不知道是否有一种更优雅的方式,或者为什么事件不会出现在画布上......(我有椭圆,这是造成麻烦的原因) – 2017-02-09 11:15:54