我有一个画布对象,在代码中生成了许多省略号。我为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。但我的代码不起作用(事件永远不会发生)。
有人可以告诉我它为什么不起作用吗?
谢谢。
答案 0 :(得分:1)
因为TextBlock在画布上结束了 如果你没有设置TextBlock的大小,它就会被拉伸。
也许如果你点击最边缘,那么就会调用消息框 您可以通过设置文本块的背景来确认文本块大小。
或者您应该将名为 IsHitTestVisible 的属性设置为 False 。
像
<TextBlock x:Name="tooltip" Margin="10" IsHitTestVisible="False">0</TextBlock>